Задать вопрос
Slash-Zn
@Slash-Zn

Подключение класса внутри класса: Правильно ли я делаю?

Здравствуйте.
Пишу приложение, и на данный момент всё прекрасно работает. Но мучает один вопрос (Не нашёл ответа), правильно ли я подключаю классы, внутри других классов. Чтобы исправить, как следует, и не накостылять в дальнейшем...

В общем и целом: Если главный класс, там я использую наследие ("extends") и ещё, в конструкторе подключаю два класса:
private $thing;
	private $clearance;

	public function __construct()
	{
		// Класс: "Thing"
		include_once (APP_DIR . 'process/class/thing.php');
		$this->thing = new thing;

		// Класс: "Clearance"
		include_once (APP_DIR . 'process/class/clearance.php');
		$this->clearance = new clearance;
	}

В классе "Clearance", что уже подключен в основном классе, мне надо подключить класс "Thing", что опять же подключен в основном классе (И так же, наследуется другой класс):
private $thing;

	public function __construct()
	{
		include_once (APP_DIR . 'process/class/thing.php');
		$this->thing = new thing;
	}

Я понимаю, что уже костыляю, подключая один и тот же класс, в подключаемых классах... Но, другого пути, пока не нашёл... Таких подключений класса "thing", у меня в каждом классе. В наследовании его воткнуть не могу, там уже наследуется...

Подскажите, это действительно неправильный подход или всё же такое вполне нормально, подключать класс, в подключаемом классе, где уже этот класс был включен?

Может можно использовать объект подключаемого класса из основного класса, где он уже подключен? Как это сделать?

Спасибо.
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 3
uDenX
@uDenX
PHP Developer
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В целом, подключение классов через include/require уже устарело. Как правило, используется автозагрузка классов по стандарту PSR4, самостоятельная (spl_autoload_register) или через composer.
Но если оставаться в легаси, то я бы вынес все подключения зависимостей через require_once в начало файлов.
Ответ написан
Комментировать
@GeKskill
В вашем случае все работает потому что используете include_once о чем говорит само название функции, она подключает ваш класс только единожды. Если не хотите использовать composer с автозагрузчиком классов, можете в своем main файле ( откуда стартует вообще приложение ) разместить все нужные include для классов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы