class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

PHP

основы

введение
инструментарий
внедрение кода
комментарий
утверждения
идентификаторы
типы данных и литералы
переменные
выражения и операции
null, пустое значение
строки
строковые функции
массивы
Функции для массивов
ссылки
управляющие операторы
функции
исключения
вставка файлов
классы
абстракция, интерфейсы
наследование, $this,parent,self
final и static
cокрытие членов

PHP API

Как сделать...

Справочник по PHP

Наследование, $this,parent,self

Ключевое слово extends задает родительский класс новому создаваемому классу. Множественное наследование запрещено. По умолчанию конструктор родительского класса не вызывается по умолчанию не вызывается. Это можно сделать явно.

Ключевое слово implements задает список реализуемых классом интерфейсов. Необходимо определить все методы всех интерфейсов и абстрактные методы родительского класса, если дочерний класс не абстрактный.


class Child extends Base 
     implements IExmpl1, IExmpl2{
...
}

$this,parent,self

В каждом классе неявно определяется свойство $this, чье значение - ссылка на объект класса. Это полезно, например, для вызова абстрактного метода внутри не абстрактного.

Методы класса не видят других членов класса. Для обращения к членам своего класса, включая наследуемые, используется ключевое слово self.

Для обращения только к родительским членам используется ключевое слово parent. Если дочерний класс замещает родительский метод, например конструкторский метод __construct(), то родительскую версию можно вызвать только так.

Все сказанное продемонстрировано в следующем примере.


//-----------------------
// базовый класс
abstract class Base {

abstract function a();

public function b(){
   $this->a(); // вызываем метод a   
}

public function d(){
    echo "<br>method d()";
}

public function e(){
echo "<br>call method e() in base";
}

};

//-----------------------
// два интерфейса
interface IExmpl1{
public function exmple1();
};

interface IExmpl2{
public function exmple2();
};

// дочерний класс с двумя интерфейсами
class Child extends Base implements IExmpl1, IExmpl2{

//определяем абстрактный метод
function a(){
    echo "<br>call method a()";
}

public function e(){
    echo "<br>call method e() in child";
}

public function c(){
    self::d();
    parent::d(); 
    self::exmple1();
    self::e();
    parent::e();
}


// реализуем первый интерфейс
function exmple1() {
    echo "<br/>example1";
}

// реализуем второй интерфейс
function exmple2(){
    echo "<br/>example2";
} 
}

//-----------------------
$cls=new Child();
$cls->b();
$cls->c();
$cls->exmple2();

Рейтинг@Mail.ru