Я хотел бы использовать мою функцию, например DebugR()
, но я не хочу использовать require или include (with include_path
) для загрузки файла функций, который содержит источник.
Я знаю, что могу использовать автозагрузку, но это действие должно быть общим в моей конфигурации php. Я думаю, что я должен создать расширение PHP, но есть ли другой способ?
Существует строка конфигурации PHP, которую вы можете сделать.
В документации сказано следующее:
строка auto_prepend_file
Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the require() function, so include_path is used. The special value none disables auto-prepending.
Не создавая расширение или автоматически загружая класс функций или непосредственно требуя функции на странице, или записывая функцию в тот же файл, я уверен, что нет способа без настройки вашей конфигурации PHP.
Из любопытства, каковы причины того, чтобы не хотеть делать что-либо из этих вещей?
Почему бы не использовать ускоритель, который кэширует код как BC в памяти?
Вам все равно нужно написать директиву «include».
Если расширение – это то место, где вы находитесь, то вилка от любого из доступных Ускорителей с открытым исходным кодом.
Единственный возможный способ сделать это – использовать автозагрузки следующим образом:
// your_file.php function __autoload($class) { require_once('./classes/' . $class . '.php'); } echo _::Bar(); var_dump(_::DebugR()); echo _::Foo(); // ./classes/_.php class _ { function Bar() { return 'bar'; } function DebugR() { return true; } function Foo() { return 'foo'; } }
Конечно, каждая функция будет храниться внутри этого класса.
Другая альтернатива, если вы работаете внутри объекта, – использовать магический метод __call () и сделать что-то вроде:
return $this->DebugR();