几个月前,我已阅读了有关每次调用静态方法时都调用的PHP函数,类似于实例化类的实例时调用的__construct
函数。但是,我似乎无法找到哪个函数在PHP中处理此功能。有这样的功能吗?PHP中静态方法的构造函数替代
5
A
回答
6
您可以__callStatic()玩,做这样的事情:
class testObj {
public function __construct() {
}
public static function __callStatic($name, $arguments) {
$name = substr($name, 1);
if(method_exists("testObj", $name)) {
echo "Calling static method '$name'<br/>";
/**
* You can write here any code you want to be run
* before a static method is called
*/
call_user_func_array(array("testObj", $name), $arguments);
}
}
static public function test($n) {
echo "n * n = " . ($n * $n);
}
}
/**
* This will go through the static 'constructor' and then call the method
*/
testObj::_test(20);
/**
* This will go directly to the method
*/
testObj::test(20);
使用此代码由“_”将运行静态的构造函数'之前第一任何方法。 这只是一个基本的例子,但您可以使用__callStatic
,但它对您更好。
祝你好运!
1
可以__callStatic()是你所指的方法吗?我刚刚发现这个PHP手册中:
http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods
也许没有,不过,因为它似乎是一个神奇的方法来处理不确定的静态方法调用...
+0
恐怕这不是我正在寻找的方法。感谢您的回复。 –
3
的__callStatic()被调用每次你调用不存在的类的静态方法。
+0
前段时间,我在PHP手册中偶然发现了这种方法,但是,正如您所提到的,只有在调用一个不存在的静态方法时才会调用它。 –
相关问题
- 1. PHP:从父类的静态方法调用子构造函数
- 2. Java - 静态构造函数
- 3. Objective C静态构造函数与动态构造函数
- 4. C中的静态构造函数
- 5. VB.NET中的静态构造函数
- 6. PHP中类的静态方法/函数
- 7. 在构造函数中调用静态方法 - CoffeeScript
- 8. 构造函数和静态函数
- 9. 执行从Javascript中的构造函数数组中访问构造函数的父节点的“静态”方法
- 10. PHP的构造函数和静态函数
- 11. xUnit runner如何处理具有静态类构造函数的静态方法?
- 12. Database.SetInitializer()在静态构造函数中?
- 13. 公共构造函数和静态构造函数
- 14. C#实例构造函数与静态构造函数
- 15. 构造一类的静态方法
- 16. 静态方法或OO替代方法?
- 17. 多构造函数vs静态创建方法
- 18. 有关静态构造函数,方法和字段
- 19. 来自静态构造函数的Database.SetInitializer
- 20. 静态块内的构造函数
- 21. Python静态类型的构造函数?
- 22. asp.net的MVC - 静态构造函数
- 23. Java - 构造函数是静态的吗?
- 24. php在静态构造函数中增加一个数字
- 25. 静态构造函数中的代码运行速度较慢
- 26. 在构造函数中使用重写方法的替代方法,Java
- 27. C++摆脱单身的:替代仿函数和静态方法
- 28. PHP静态变量构造
- 29. 调用非静态方法构造
- 30. 显式调用静态构造函数
这不是我所希望的,但我认为它与我所寻找的最接近。谢谢,阿迪。 –
没问题,希望我帮忙。 –