autoload functions in php [duplicate]
Is it possible to autoload functions?
What I have is I have written functions distributed over different files named开发者_Python百科 after the function name, so what I need is to autoload the file containing the function automatically. Is there any way to do this?
You can autoload classes, so if you make your functions static methods of classes then it will work.
abstract class Util
{
static function doSomething() {
}
}
Usage:
Util::doSomething();
Use:
include("path");
or
require_once("path");
References:
http://php.net/manual/en/function.include.php
http://php.net/manual/en/function.require-once.php
Nope, but you can load classes. using __autoload($className)
Although this is not wise, it is possible.
You may save those functions in a file and prepend this file to all requested scripts:
- front controller pattern (one central file for all requests, include it there)
- php's auto_prepend_file
But the wise, OOP solution would be to group those functions into classes and use __autoload
or some framework autoloader like Zend_Autloader
to speed things up and load just the features you need.
Not directly. But you can add following code to top of your code to automatically include functions:
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"]);
The only thing you need to change is the second line: First parameter is the folder where to look for files, the second param is an array which wraps both values around the function name.
For example: If your function files are in the sub directory "func_dir/" and are namen "func_*.php" (where * is the function name), then you can use the above code directly as-is. However, you have to put that code in every file where you want to load functions automatically and adapt the path.
It's a little bit dirty, but it works. I hope my code helps you.
精彩评论