PHP5 против PHP4 или Как использовать абстрактные классы и методы
Как известно в PHP5 произошли некоторые нововведения в объектной модели. Одно из этих нововведений является появление абстрактных (abstract class) классов.
Создаются они так же как и обычные классы (class) за исключением одного модификатора abstract.
abstract class AbstractClassName
{
}
И по своей сути отличаются только тем, что от обычного класса (class) можно создать объект, а от абстрактного(abstract class) нет. Например, следующий пример вызовет ошибку:
abstract class AbstractClassName
{
}
$Object_name = new AbstractClassName;
Ошибка происходит из-за того, что абстрактный класс (abstract class) может использоваться только как базовый. То есть он нужен для описания или реализации как бы скелета, для класса потомка. Правильный подход будет таковым:
abstract class AbstractClassName
{
function Helo()
{
echo "Helo AbstractClassName";
}
}
class ClassName extends AbstractClassName
{
}
$Object_name = new ClassName;
$Object_name -> Helo();
Так же абстрактный класс (abstract class) может содержать абстрактные методы:
abstract class AbstractClassName
{
abstract function Helo();
}
Абстрактный метод не несет какой то функциональной задачи, а просто описывает метод для класса потомка. Потомок в свою очередь должен использовать или хотя бы описывать этот метод. В противном случаи произойдёт ошибка. Пример ниже, показывает как правильно это делать.
abstract class AbstractClassName
{
abstract function Helo($text);
}
class ClassName extends AbstractClassName
{
function Helo($text)
{
echo $text;
}
}
$Object_name = new ClassName;
$Object_name -> Helo("Helo AbstractClassName");
Надеюсь, вам всё стало понятно, и вы сами теперь можете применять эту новую возможность объектной модели PHP5.
Желаю вам успехов, и абстрактного мышления!




Добавить комментарий