создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

::Пред.Глава 19. Классы и объекты (PHP 5)След.

::

"Paamayim Nekudotayim" или просто "двойное двоеточие". Используя эту лексему, программист может обращаться к константам, статическим или перегруженным свойствам или методам класса.

При обращении к этим элементам извне класса, программист должен использовать имя этого класса.

"Paamayim Nekudotayim" на первый взгляд может показаться странным словосочетанием для обозначения двойного двоеточия. Однако, во время создания Zend Engine версии 0.5 (который входил в PHP3), Andi и Zeev выбрали именно это обозначение. "Paamayim Nekudotayim" действительно значит "двойное двоеточие". На иврите. Просто это обозначение не менялось ни разу в течение всего времени разработки PHP.

Пример 19-10. Использование :: вне объявления класса
<?php

class MyClass {

  const CONST_VALUE = 'Значение константы';

}

echo MyClass::CONST_VALUE;

?>

Для обращения к свойствам и методам в объявлении класса используются ключевые слова self и parent.

Пример 19-11. Использование :: в объявлении класса
<?php

class OtherClass extends MyClass {

  public static $my_static = 'статическая переменная';

  public static function doubleColon() {

     echo parent::CONST_VALUE . "\n";

     echo self::$my_static . "\n";

  }

}

OtherClass::doubleColon();

?>

Когда дочерний класс перегружает методы, объявленные в классе-родителе, PHP не будет осуществлять автоматический вызов методов, принадлежащих классу-родителю. Этот функционал возлагается на метод, перегружаемый в дочернем классе. Данное правило распространяется на конструкторы и деструкторы, перегруженные и "волшебные" методы.

Пример 19-12. Обращение к методу в родительском классе
<?php

class MyClass {

  protected function myFunc() {

    echo "MyClass::myFunc()\n";

  }

}

class OtherClass extends MyClass {

  /* Override parent's definition */

  public function myFunc() {

    /* But still call the parent function */

    parent::myFunc();

    echo "OtherClass::myFunc()\n";

  }

}

$class = new OtherClass();

$class->myFunc();

?>

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting