在使用PHP的面向对象编程范式与
(示例为简洁起见而简化)
tl;dr:如何常规处理独立函数加载:
1. 伪自动加载(例如通过
另请注意,我发布了一个相关问题,涉及
选项1:一个抽象的
选项2:将相关功能分组到抽象的“helper”类中,以静态方式调用:
__autoload()
函数的项目中,对于管理独立函数,以下哪项被认为是最佳实践:(示例为简洁起见而简化)
tl;dr:如何常规处理独立函数加载:
1. 伪自动加载(例如通过
__callStatic
魔术方法)
2. 抽象帮助类分组静态方法
3. 另一种选择另请注意,我发布了一个相关问题,涉及
Option 1
的参数/引用问题,可以在此处找到:__callStatic(),call_user_func_array(),references和PHP 5.3.1
在index.php
中给出。function __autoload($class){
require $class . '.class.php';
}
选项1:一个抽象的
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:将相关功能分组到抽象的“helper”类中,以静态方式调用:
## 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