Класс не найден после запроса файла, содержащего оператор использования
Я пытаюсь использовать файл для настройки соединения с базой данных с RedBeanPHP, который может быть включен везде. Пример:
file1.php
<?php
require_once '../vendor/autoload.php';
use RedBean_Facade as R;
R::setup();
?>
file2.php
<?php
require_once 'file1.php';
R::debug(true);
?>
Однако переход к file2.php показывает эту ошибку:
Неустранимая ошибка: класс 'R' не найден в /file1.php в строке 5
Не используют ли операторы пространства имен в PHP? include
д?
1 ответ
В PHP namespace
а также use
объявления действительны только в том физическом файле, в котором они появляются. Эти объявления не охватывают require
s. Они уже обрабатываются во время компиляции.
Если a.php
использует псевдонимы в своем пространстве имен, и он включается b.php
псевдонимы, определенные в a.php
не будут видны b.php
,
Вы должны будете вставить свой use
заявление в каждый файл. Вот документация:
Правила импорта для каждого файла
Тем не менее, вы можете обойти это, используя class_alias:
class_alias('RedBean_Facade', 'R');