Я могу написать это в файле:
use Carbon\Carbon as Carbon;
Я попытался создать файл ‘aliases.php’:
use Carbon\Carbon as Carbon;
на который я тогда ссылаюсь вот так:
require __DIR__.'/../bootstrap/aliases.php';
printf("Right now is %s", Carbon::now()->toDateTimeString());
но это дает мне ошибку: «Неустранимая ошибка: класс« Углерод »не найден»
Итак, как я могу «включить» один файл со всеми предопределенными псевдонимами?
Прежде всего, причина, почему ваш aliases.php файл не работает, потому что использование заявления видны только в файле, в котором они объявлены. Другими словами, они работают в вашем aliases.php файл, но не в файлах, которые включают в себя / требуют aliases.php.
Из документации PHP Использование пространств имен: алиасинг / импорт:
Замечания:
Правила импорта основаны на файлах, это означает, что включенные файлы НЕ наследуют правила импорта родительского файла.
Во-вторых, из-за того, как работает пространство имен в PHP, невозможно сделать то, что вы пытаетесь сделать. Когда PHP видит имя класса, оно всегда пытается найти класс в текущем пространстве имен, и изменить его невозможно. Поэтому, если вы позвоните углерод в любом коде пространства имен он будет интерпретироваться как Текущий \ Namespace \ Carbon, и если вы вызываете его из глобального пространства имен, это будет интерпретироваться как \ Carbon.
Единственное, что приходит мне в голову, что может сделать что-то подобное, это объявить класс в глобальном пространстве имен, который расширит класс, который вы пытаетесь использовать, а затем использовать эти классы вместо этого. Для углерода это будет:
<?php
use Carbon\Carbon as BaseCarbon;
class Carbon extends BaseCarbon {}
Тогда в вашем коде вы можете получить к нему доступ:
\Carbon::now();
Имейте в виду, что вам нужно префикс имени класса с \ так что он всегда берется из глобального пространства имен, если только выполняемый вами код уже не находится в глобальном пространстве имен.
Других решений пока нет …