Спадкування класів в php
спадкування - це один з "трьох китів" ООП, який дозволяє створювати дочірні класи на основі батьківських (супер-класів), Забравши у них властивості, методи і конструктори. Хочеться зауважити, що успадкування класів в PHP зустрічається тільки вже в серйозних проектах. До того ж, новачки спадкування рідко використовують взагалі, але тим не менше. Коли я робив свій движок для сайту (а він досить великий), то використовував успадкування класів в PHP на повну катушку. І про те, як це робиться, я і напишу в цій статті.
Давайте для початку створимо який-небудь нескладний клас, наприклад, клас, який відповідає за об`єкт "автомобіль" (у файлі "car.php"):
lt ;?php
classCar{
public $ x-
public $ y-
publicfunction __construct($ x, $ y){
$ this-gt;x = $ x-
$ this-gt;y = $ y-
}
publicfunction move ($ x, $ y){
$ this-gt;sound() -
echo "Рух автомобіля з координат ($ this-gt; x, $ this-gt; y) в координати ($ x, $ y)
"-
$ this-gt;x = $ x-
$ this-gt;y = $ y-
}
publicfunction sound(){
echo "Звук руху автомобіля
"-
}
}
?gt;
В класі "Car"Ми визначили два властивості, що відповідають за поточні координати місця розташування автомобіля. Створили конструктор, який дозволяє призначити початкові координати. Потім створили метод move (), дозволяє почати рух в координати, передані в параметрах методу. Усередині цього методу ми викликаємо метод sound (), який запускає звук руху. Ось такий придуманий клас.
Відео: PHP Start | Теорія: Урок 14. ООП # 2. Спадкування, інкапсуляція
Тепер створимо клас, який відповідає за "Легковий автомобіль" (у файлі "auto.php"):
lt ;?php
require_once "Car.php"-
classAutoextendsCar{
publicfunction move($ x, $ y){
$ this-gt;sound() -
echo "Рух легкового автомобіля з координат ($ this-gt; x, $ this-gt; y) в координати ($ x, $ y)
"-
$ this-gt;x = $ x-
$ this-gt;y = $ y-
}
publicfunction sound(){
echo "Звук руху легкового автомобіля
"-
}
}
?gt;
На самому початку ми підключаємо наш клас "Car". Потім ми починаємо створювати клас"Auto", Який є спадкоємцем для класу"Car"("class Auto extends Car"). З огляду на те, що клас"Auto"Уже забирає все властивості, методи і конструктори, то нам немає необхідності їх описувати заново. Однак, методи move () і sound () повинні мати іншу реалізацію, тому ми пишемо інший код цих методів.
І, наостанок, створимо скрипт, який створить об`єкт "Car"І"Auto"І скористаємося їх методами і властивостями:
lt ;?php
require_once "Auto.php"-
$ car =newCar(10,20) -
echo $ car-gt;x-
echo "
"-
echo $ car-gt;y-
echo "
"-
$ car-gt;move(15,5) -
$ auto =newAuto(5,10) -
echo $ auto-gt;x-
echo "
"-
echo $ auto-gt;y-
echo "
"-
$ auto-gt;move(0,0) -
?gt;
Спочатку все просто: ми створюємо об`єкт "Car", Виводимо його властивості, використовуємо його метод move (). А ось потім ми створюємо об`єкт "Auto". З огляду на те, що ми не визначали свого конструктора в цьому класі, то він береться з батьківського. Потім виводимо властивості, які ми, до речі, також не визначали, і вони теж беруться з батьківського класу. А потім використовуємо метод move (). І, зрозуміло, береться реалізація не з класу "Car", А з класу"Auto", Який відповідає у нас за легковий автомобіль.
Відео: ООП для початківців PHP. Спадкування. Конструктори в спадкуванні. властивість protected
Однак, даний приклад є недосконалим, точніше, навіть дуже брудним, зважаючи на наявність дублювання (повторюваний код). І логіки в тому, що у нас існує "автомобіль"І"Легковий автомобіль"Теж немає. Ви можете уявити собі"автомобіль"? Упевнений, що у кожного з Вас будуть абсолютно різні образи. А ось"Легковий автомобіль"- це вже більш точне визначення (хоча теж далеко від остаточно точного). І в ООП для неточних, абстрактних понять, існує можливість створювати абстрактні класи, про які ми поговоримо в наступній статті. І Ви побачите, що код даного прикладу стане на порядок чистіше.
До речі, даю домашнє завдання: створити клас, який відповідає за "Вантажний автомобіль" (за аналогією з "легковим автомобілем"), І який буде успадковуватися від класу"автомобіль".
Відео: PHP. Основи ООП. Урок 6 - Спадкування
А успадкування класів в PHP на цьому не закінчується, і вже в наступній статті ми продовжимо цю тему.
- Що нового в php7.1: ключове слово void.
- Створення движка на mvc. Створюємо можливість додавання користувача в базу даних через адмін панель
- Абстрактні класи в php
- Метод tostring () в php
- Вивчаємо coffeescript. Класи.
- Серіалізация об`єктів в php.
- Інтерфейси в php
- Reflection api. Reflectionclass.
- Створення винятків в php
- Простори назв в php.
- Модифікатори доступу в php
- Статичні властивості і методи в php
- Клас для роботи з базою даних
- Поняття ооп в jаvascript
- Створення класу в php
- Ооп проти процедурного підходу.
- Reflection api. Reflectionobject.
- Об`єкти, прототипи і конструктори в мові jаvascript.
- Створення движка на mvc. Створюємо авторизацію.
- Створення движка на mvc. Починаємо роботу з базою даних.
- Створення движка на mvc. Допрацьовуємо роутер.