Классы и объекты PHP
После выхода PHP5 поддержка Три свойства ООП Объектно-ориентированное программирование в PHP стала практически полной.
- Общие стандарты кодирования PHP: правила наименования классов, PHP_CodeSniffer и т.д..
- Инициализации приложения. Автоматическая загрузка классов.
- Различия между передачей по ссылке объектов и обычных переменных в PHP версий 5.x.
$var1 = 10; // $var2 - копия текущего состояния переменной $var1 $var2 = $var1; // $var3 - жесткая ссылка на $var1, дальнейшее изменение значения одной из // них отразится на значении второй $var3 = &$var1; $obj1 = new MyClass(); $obj2 = clone $obj1; // $obj2 - копия текущего состояния $obj1 $obj3 = $obj1; // $obj3 - жесткая ссылка на $obj1
$this,parent,self,::
- $this - это псевдопеременная, указывающая на объект класса (ссылка на вызываемый объект), она доступна в том случае, если метод был вызван в контексте объекта и вы хотите указать, что работаете с локальным свойством текущего объекта. Обычно это тот объект, которому принадлежит вызванный метод, но может быть и другой объект, если метод был вызван статически из контекста другого объекта. Если вы не создаете объектов класса, ваш класс статический, переменная работать $this не будет. При проектировании методов, которые обращаются к внутренним членам(методам) класса, необходимо следить за тем, что к членам(методам) класса следует обращаться через префикс $this, а при обращении к параметрам метода данный префикс не требуется. В большинстве случаев интерпретатор РНР не сообщит о наличии ошибок, если при обращении к внутреннему члену класса не используется префикс $this, а при обращении к параметру метода префикс $this используется. При этом будет создана новая переменная с нулевым значением . Эта ошибка очень распространена и связана с фундаментальной особенностью РНР - отсутствием типизации: использование переменной с любым именем приводит к созданию переменной с этим именем. К статическим членам класса нельзя обращаться через $this.
- Ключевое слово parent используется для обращения только к родительским членам. Если дочерний класс замещает родительский метод, то родительскую версию можно вызвать только так.
- Оператор области видимости (scope resolution) :: (два двоеточия рядом) используется для доступа к статическим или переопределенным методам класса, например для вызова конструктора класса-родителя из класса-потомка
parent::__construct()
- Ключевое слово self - указатель на сам класс, в отличии от $this, который является указателем на объект класса. Методы класса не видят других членов класса. Для обращения к членам своего класса, включая наследуемые, используется ключевое слово self.
- Обращение к статическому методу или свойству в классе: self::method()
- Обращение к статическому методу или свойству из вне класса: ClassName::method()
Специальные методы класса
Специальные методы класса: construct(), destruct(), clone() и т.д. Каждый специальный метод предваряется двумя символами подчеркивания.
- Клонирование объектов в PHP 5 происходит при помощи ключевого слова clone. При клонировании конструктор НЕ вызывается, но если нужно при клонировании использовать конструктор - описывается метод clone(). Пример клонирования: car2 = clone car1;, если написать так car2 = car1; в этом случае car2 будет просто ссылкой на car1.
Функции для работы с методами и классами
- get_class_medhods($class_name) - Возвращает массив с именами методов класса $class_name.
$class_methods = get_class_methods(new MyClass()); print_r($class_methods);
Примеры
- Счетчик объектов
<?php error_reporting(E_ALL & ~E_NOTICE); class counter { public static $count = 0; public function __construct() { self::$count++; // идентично counter::$count++; } public function __destruct() { self::$count--; // идентично counter::$count--; } } $obj = new counter(); echo counter::$count . "\n"; // 1 for ($i = 0; $i < 3; $i++) { $arr[] = new counter(); echo counter::$count . "\n"; // 2, 3, 4 } unset($arr); // уничтожение массива объктов echo counter::$count . "\n"; // 1 ?>
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах