Давай по порядку.
По теме наследования.
Небольшой пример.
<?php
namespace Engine;
abstract class Foundation
{
/**
* Арматура (mm)
* Я не хочу что бы моя арматура торчала из моего фундамента
* Поэтому принял решение что этот параметр не выйдет за пределы класса
* @var integer
*/
private $fittings = 15;
/**
* Балка
* Балка будет видна, прежде чем я постелю полы
* Я планирую ещё работать с полом и мне нужен доступ к балкам
* Которые лежат на фундаменте
* @var string
*/
protected $beam = "Охренительно ровная балка";
/**
* Мне нужен доступ в подвал
* Я так же могу получить доступ к своему фундаменту
* И возможно подогнуть торчащу арматуру из моего горе фундамента
* @var string
*/
public $сellar = "Вход в погреб";
/**
* Foundation constructor.
*/
public function __construct()
{
// Строю дом
}
}
<?php
namespace Engine;
/**
* Стены
* Я наслудую базовый класс Foundation
* У меня есть доступ к балке.
* Но у меня нет доступа к арматуре
* Арматура была залита бетоном.
*
* Class Walls
* @package Engine
*/
class Walls extends Foundation
{
/**
* Окно
* @var string
*/
protected $window;
/**
* Дверь
* @var string
*/
protected $door;
/**
* Walls constructor.
*/
public function __construct()
{
parent::__construct();
$beam = $this->beam; // Пожалуй воспользуюсь балкой
}
// здесь что-то будем делать со стенами
}
<?php
namespace Engine;
/**
* Крыша
* Class Roof
* @package Engine
*/
class Roof extends Walls
{
/**
* Roof constructor.
*/
public function __construct()
{
parent::__construct();
// Я всё ещё имею к ним доступ, но только внутри класса
$this->beam;
$this->door;
$this->window;
$this->сellar;
}
}
Строю дом, но у меня есть только доступ к подвалу (((
$home = new Walls();
$home->сellar;
Не умею стоить дома.
Прилагаю диаграмму
Наследование классов можно сравнить с наследованием в жизни, от отца к сыну./
У тебя или есть наследство
Или нет
Или есть, но ты воспользоваться не можешь.
Главное что есть вход в подвал!
Это важно!