Абстрактный класс отличается от интерфейса лишь
тем, что в нём можно реализовывать методы.
Ну, абстрактный класс отличается от интерфейса ещё, например тем, что интерфейс - это, в общем-то, вообще не класс. Интерфейс - это своего рода контракт, который должен быть исполнен тем кодом который его принимает.
Ну и говорить о том, что там вот методы, а там не только методы - глупо, т.к есть ЯПы где интерфейс может описывать не только методы или, даже, иметь возможность реализовывать функционал.
L!MP, Да я как бы не претендую на истину в последней инстанции. Если отходить от пыха, то тут долго можно ещё обсуждать всё это.
Понимать абстрактные классы лучше всего буквально и вообще не лезть в сравнения их с интерфейсами.
Абстрактность. Абстрактное понятие о чем либо.
Вот, например, девушка-блондинка. У неё есть абстрактное представление о двигателе внутреннего сгорания - она знает что он умеет работать (грубо говоря, у него есть функция ВКЛ.) и то что ему для этой работы нужно топливо (т.е функция заправки).
Вот вам и абстрактный класс.
Koenig, Да, так и сделаю
Бо неохото мне пока еб**ь свой мозг и так сегодне целый день с кодом работал надо отдохнуть
----
О обстракных классах я только пока буду читать и то не уверен бо чесноговоря меня вовсе к ним не тянет
Koenig, Щас вот продолжил писать блог, до этого отдыхал бо запарился портитовать диз с ворд пресса.
Правильно ли я написал?
<?php
class DB {
private static $instance = null;
private function __construct(){}
private function __clone(){}
private function __wakeup(){}
public static function getInstance() {
if(is_null(self::$instance)) {
self::connect();
}
return self::$instance;
}
public static function connect() {
# Данные от бд
$dbcfg = [
'host' => 'localhost',
'name' => 'myblog',
'user' => 'root',
'pass' => ''
];
$opt = [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];
if(!self::$instance)
self::$instance = new PDO("mysql:host=".$dbcfg['host'].";dbname=".$dbcfg['name'], $dbcfg['user'], $dbcfg['pass'], $opt);
}
public static function prepare($sql, $values = null) {
$sth = self::$instance->prepare($sql);
$sth->execute($values);
return $sth;
}
public static function lastId() {
return self::$instance->lastInsertId();
}
}
Swank, наследовать пдо наверное надо еще
Koenig, Оно не будет так работать
Folour, а так голый синглтон по сути, который просто отдает экземпляр пдо
# Koenig (29.04.2015 / 17:42)
Folour, а так голый синглтон по сути, который просто отдает экземпляр пдо
А что измениться, если он унаследует PDO ?