О нас
Разработчикам
Заметки
Переводчик
Транслитератор
Сравнить текст
Генератор пароля
Ip и информация
Создать картинку Webp
En
О нас
Разработчикам
En
Oop php
Контент
<?php /* При обращение к классу в самом классе пишем $this Методы классов это функциии */ class Index extends Page { // Класс Index наследует класс Page public function __construct($t, $s) { /* Переопределение метода. Метод construct наследует метод construct из класса Page, далее добавляю $s */ parent::__construct($t); $this->slide = $s; } /* Метод обычно что-то возвращает с помощью return */ } class Poly { public $ob; public function get_ob(Page $var) { // (Page $var) эта запись означает в классе Page переменная var $this->ob[] = $var; } // В статичном методе создать экземпляр класса public static function test() { $self = new self(); } } /* Сначала создать класс, затем методы, ниже создать объекты */ $poly = new poly(); /* новый объект poly или $poly = new $pol; */ $poly->get(); /* вызываем метод */ class Page { // Свойство класса public $header = 'HEADER'; public $content; public $footer; // Метод класса public function view_hearder($var1, $var2) { echo $this->hearder.'<br>'.$var1.$var2; } function __autoload($var) { // Подключение множество файлов из папки classes include 'classes/' . $var . '.php'; // В переменную var попадает имя класса, объект которого создаём } class Page { const NUMBER = 1; // Костанта — не изменяемая, знак $ не ставим и вместо $this пишем self::NUMBER; public $a = 'public'; // Открытый спецификатор доступа protected $_b = 'protected'; // Закрытый спецификатор доступа, только из класса и наследников, в название нижние подчёркивание private $_c = 'private'; // Закрытый спецификатор доступа, только внутри класса, в название нижние подчёркивание } $page = new Page(); // Создать объяект echo Page::NUMBER; // Вывести NUMBER interface IUser { // Абстракные методы, которые только наследуются и переопределяются public function get_user(); } abstract class AUser implements IUser { // Обязательно наследование interface } // Абстрактный класс - нельзя создать объект // Абстрактный метод - в классе наследнике необходимо создать этот метод // Если наследуются два класса, то пишем через запятую class User { // final финальные классы не наследуют public $name; public function __construct($name){ $this->name = $name; } public function __clone() { // Вызывается в момент клонированя объектов echo 'CLONE OBJECT'; } final protected function can() { // Финальные методы запрещенно переопределять в дочерних классах // code } } $user = new User('Victor'); if ($User instanceof User) { // Принадлежит ли объект к классу if ($User instanceof Customer) { // или к родителям класса echo 'is Customer'; } else { echo 'is User'; } } $user2 clone $user; // Клонирование объектов echo $user2->name; // Магические методы __construct() // метод при создание класса __destruct() // метод при удаление класса __clone() // метод при клонирование класса __set($name, $value) // метод не существуещего свойства класса __get($name) // метод выводит не существуещее свойства класса __call() // метод при обращение к не существующим методам __tostring() // метод приводит объект в строку, можно вывести через echo // В объекте создать любое свойство и получать его, для этого в классе или в трайте пишем: protected $data; public function __set($name, $value) { $this->data[$name] = $value; } public function __get($name) { return $this->data[$name] ?? null; } // Задаём и получаем свойство $user = new \app\classes\User(); $user->display = 'New'; dump($user->display); // Позднее статическое связывание // Вместо self использовать static, тогда в классе наследнике можно переопределить свойство (переменную) // Документация /** * * @return int Сумма двух чисел. * * @property \App\Config $config Свойства у объектов или переменные * * @deprecated Устаревший метод. */
Список
Loading...