функции автозагрузки в php

Можно ли автозагружать функции?

То, что у меня есть, это то, что я написал функции, распределенные по разным файлам, названным после имени функции, поэтому мне нужно автоматически загрузить файл, содержащий эту функцию. Есть какой-либо способ сделать это?

Вы можете автоматически загружать классы , поэтому, если вы создадите свои функции статические методы классов, то это сработает.

abstract class Util { static function doSomething() { } } 

Применение:

 Util::doSomething(); 

Использование:

 include("path"); 

или

 require_once("path"); 

Рекомендации:

http://php.net/manual/en/function.include.php

http://php.net/manual/en/function.require-once.php

Нет, но вы можете загружать классы. используя __autoload($className)

Хотя это не разумно, это возможно.

Вы можете сохранить эти функции в файле и добавить этот файл во все запрошенные скрипты:

  • (один центральный файл для всех запросов, включите его там)
  • php's auto_prepend_file

Но разумным решением OOP было бы сгруппировать эти функции в классы и использовать __autoload или какой-то фреймворк-автозагрузчик, такой как Zend_Autloader чтобы ускорить работу и загрузить только те функции, которые вам нужны.

Не напрямую. Но вы можете добавить следующий код в начало своего кода, чтобы автоматически включать функции:

 call_user_func(function($p,$w){$c=file_get_contents(__FILE__);$fs=explode('(',$c);$f=[];for($i=65;$i<=90;$i++){$vc[chr($i)]=1;$vc[chr($i+32)]=1;if($i<75)$vc[chr($i-17)]=1;}$vc['_']=1;foreach($fs as $fn){$fn=rtrim($fn);for($i=strlen($fn)-1;$i>=0;$i--){if(!isset($vc[$fn[$i]])){$f[]=substr($fn,$i+1);break;}}}foreach($f as $c){@include_once($p.$w[0].$c.$w[1]);}}, "func_dir/",["func_",".php"]); 

Единственное, что вам нужно изменить, это вторая строка: Первый параметр – это папка для поиска файлов, второй параметр – это массив, который обертывает оба значения вокруг имени функции.

Например: если ваши файлы функций находятся в подкаталоге «func_dir /» и являются namen «func _ *. Php» (где * – имя функции), вы можете использовать вышеуказанный код непосредственно как есть. Однако вы должны поместить этот код в каждый файл, где вы хотите автоматически загружать функции и адаптировать путь.

Это немного грязно, но это работает. Надеюсь, мой код поможет вам.