在使用PHP的__autoload()函数利用OOP范式的PHP项目时,以下哪个被认为是管理独立函数的最佳实践:
(为简洁起见,简化了所提供的例子)
tl;dr:独立的函数加载是如何处理的:
__callStatic魔术)选项1还请注意,我已经发布了一个有关选项1__的参数/引用问题的相关问题,在这里可以找到:
用index.php**:**给出的
function __autoload($class){
require $class . '.class.php';
}"autoloads“函数的抽象Core Library**,类(或类):**
## Core.class.php
abstract class Core{
public static function __callStatic($function, $arguments){
if(!function_exists($function)){
require $function . '.function.php';
}
return call_user_func_array($function, $arguments);
}
}
## SayHello.function.php
function sayHello(){
echo 'Hello';
}
## SayGoodbye.function.php
function sayGoodbye(){
echo 'Goodbye';
}
## index.php
Core::sayHello(); // Hello
Core::sayGoodbye(); // Goodbye选项2;将相关函数分组为要静态调用的抽象“助手”类:
## SayStuff.class.php
abstract class SayStuff{
public static function sayHello(){
echo 'Hello';
}
public static function sayGoodbye(){
echo 'Goodbye';
}
}
## index.php
SayStuff::sayHello(); // Hello
SayStuff::sayGoodbye(); // Goodbye发布于 2011-04-08 23:36:40
我不会使用“选项1”,主要是因为它使用的是call_user_func*,直接调用函数的速度要慢一些。
如果您只需要一些没有真正结合在一起的帮助函数,那么我可能会包含一个文件helpers.php,它只包含一个没有封装在静态类中的所有助手函数的列表,因为在这种情况下,封装并没有真正达到任何目的。大多数情况下,每个请求都将使用助手函数,因此在每个请求中包含此文件不会造成任何损害……
发布于 2011-04-08 21:54:37
我在这里没有看到一个确切的问题,但由于标题包含“最佳实践”,下面是我最近发现的一个建议:
It seems to be preferable to use PHP's instead of (关于“大卫解剖”博客的一个很好的例子)。
引用链接的博客文章:
使用SPL版本的最大好处(我迄今可以看到)是:
__autoload()稍后运行,我的spl_autoload_register()‘ed函数将不会被替换。https://stackoverflow.com/questions/5600883
复制相似问题