После парадигмы процедурного программирования было изобретено объектно-ориентированное программирование. Переменные называются свойствами, а функции называются методами. Каждый раз, когда вы объявляете класс, вызывается метод __construct():
Мы рассмотрим:
- Четыре основополагающих понятия: наследование, полиморфизм, абстракция и инкапсуляция;
- Определения свойств и методов: const и static;
- Отношения классов: ассоциация, агрегация и композиция;
- Перехватчики: __set(), get() и __call();
- Автозагрузка классов в PHP5+ с помощью __autoload();
- Обработка ошибок с помощью: trigger_error(), set_error_handler(), throw New Exception('') и try {} catch ( ) {Исключение $e}.
Четыре основополагающие концепции
В ООП у нас есть четыре основополагающих концепции:
Наследование: у нас могут быть родительские и дочерние классы.
Полиморфизм: методы родителя могут быть переопределены потомком.
Абстракция: abstract не может быть создана, а final не может быть расширена.
Инкапсуляция: речь идет об общедоступных, защищенных и частных концепциях. Я уже писал об этом статью: https://medium.com/@cesarkohl/public-protected-and-private-properties-in-oop-de03166d23cf
Постоянный и статический
Постоянная
Во-первых, давайте определим, что такое константа: это противоположность переменной; что-то, что сохраняет свое значение до конца скрипта.
В приведенном выше примере мы объявили const pi. Чтобы получить значение константы, мы должны установить внутри класса директиву self::pi. Посмотрите на Number-›getPi().
Нет смысла объявлять функцию константой.
Установите self:: для получения констант класса и parent:: для получения констант родительского класса.
Статический
Когда вы объявляете константу, переменную или метод статическими, вы можете вызывать их напрямую, не объявляя класс.
Ассоциация, агрегация и композиция
В ООП обычно классы связаны друг с другом. Эти отношения могут быть 3-х типов:
Ассоциация
Вино должно быть из винного дома. Это объект, внутри которого должен быть другой объект.
Есть 2 объявления классов, и одно содержит другое.
Агрегация
В корзине может быть много товаров. Но если один или все взяты, корзина все еще существует. Эта связь известна как целое/часть.
Существует как минимум 2 объявления классов, и ни одно из них не содержит другого.
Сочинение
Вино изготавливает сомелье. Сомелье может изменить состав вина. Родитель отвечает за создание/уничтожение своих частей.
Есть 1 объявление класса, а другой класс уже объявлен внутри класса.
Перехватчики
Здесь я объясню больше о __set(), __get() и __call().
__набор()
Когда свойство является закрытым или защищенным, и вы устанавливаете для него значение, будет вызван метод __set().
__получить()
Когда свойство является закрытым или защищенным, и вы вызываете для получения его значения, будет вызван метод __get().
__вызов()
Когда вызывается несуществующий метод, будет вызван метод __call().
Автозагрузка
Начиная с PHP 5, вы можете загружать классы более эффективно, чем:
Новый способ вызова метода __autoload:
И когда вам нужно вызвать библиотеки, вы можете вызвать Composer. Я написал об этом статью: https://medium.com/@cesarkohl/composer-basics-what-is-it-and-how-to-use-it-b20306aa8650
Работа с ошибками (по крайней мере, в PHP)
Лучший способ справиться с ошибками — использовать следующие методы:
- триггер_ошибка()
- set_error_handler()
- бросить новое исключение
- попробуйте {} поймать () {Исключение $e}
Взгляните на документацию PHP, чтобы узнать больше об этом.
Вот суть статьи: https://gist.github.com/cesarkohl/1b971f1c6c10f1c86e76cca10c52bd24
И это конец обзора ООП. Надеюсь, вам понравилось!