【发布时间】:2018-07-20 08:02:39
【问题描述】:
如果我正在使用 PHP 设计一个框架,并且在我的框架中有一个 A 类和一个 AManager 类。
怎样才能让所有的A对象方法或类方法只能在AManager方法中调用?
如:
class A {
public function __construct() {
if( the calling environment is not within AManager Object Method )
throw new Exception("error")
else
init..
}
}
我曾尝试使用__callStatic 和debug_backtrace 之类的:
private static function create($a,$b) {
echo "in create";
new Logger($a,$b);
}
public function __callStatic($name, $arguments) {
$array = debug_backtrace(); // check environment
var_dump($array);
return;
call_user_func_array([Logger::class,$name],$arguments);
}
但回溯只显示__callStatic。
那么有什么方法可以满足我的要求吗?
【问题讨论】:
-
你不能让
A的方法受保护并用AManager扩展类吗?这不是完全你所追求的,但是......
标签: php