Пока у нас есть два противоречивых, но одинаково правильных ответа =) Давайте посмотрим, не могу ли я объединить два в более конкретный общий ответ.
Если любому классу требуется какой-либо код или определения в bla.php
, то вам потребуется include("bla.php")
хотя бы один раз за все время выполнения вашего скрипта. Если ваш предыдущий код:
<?php
require_once("bla.php");
class controller{.....}
php>
находится в файле controller.php
, тогда вы можете создать control_A
следующим образом:
<?php
require_once("controller.php");
class control_A extends controller{...}
?>
Это потому, что функция require_once()
по существу копирует и вставляет содержимое файла в сценарий в этой строке. Поэтому вышесказанное будет рассматриваться как эквивалентное этому:
<?php
/* INSERTED FROM controller.php */
/* INSERTED FROM bla.php */
necessary definitions for controller
/* END bla.php */
class controller{.....}
/* END controller.php */
class control_A extends controller{...}
?>
Как видите, просто требуя controller.php
, необходимые определения для контроллера теперь видны и анализируются. То, что вы можете не сделать, это опустить объявление controller
. Это не только потому, что вам потребовалось bla.php
при его объявлении, но также вы не можете расширить класс, который еще не был объявлен. Итак, следующий код:
<?php
class control_A extends controller{...}
?>
выдаст ошибку, поскольку контроллер не был определен.
Однако следует учитывать одну вещь - поскольку класс controller
не расширяет какой-либо другой класс, он не должен иметь никаких внешних зависимостей. Есть хороший шанс, что все, что вы делаете в bla.php
, которое должно быть выполнено до определения класса, либо не нужно, либо может быть реструктурировано. Что именно bla.php
делает, что вам нужно, прежде чем определить controller
?