我注意到如果我在一个与外部函数同名的类方法中声明一个函数,我会收到一个错误:
function a(){
...
}
class foo{
public function init(){
function a(){ //
...
}
...
}
}
但这会起作用:
function a(){
...
}
class foo{
public static function a(){
...
}
}
我可以使用require_once或类似的东西包含一组作为此类的静态方法的函数吗?
require_once( ‘file.php’);课后foo {不起作用……
解决方法:
如果您的类结构允许,您可以将该类拆分为几个不同的类,这些类是继承链的一部分:
class foo1 {
public static function a() {}
}
class foo extends foo1 {
public static function b() {}
}
或者,如果您愿意接受性能影响,则可以使用__callStatic(). (需要PHP 5.3;但如果你只需要非静态方法,__ call可以从5.0获得.)Smarty 3执行这个IIRC.
class foo {
private static $parts = array('A', 'B');
public static __callStatic($name, $arguments) {
foreach (self::$parts as $part) {
if (method_exists($part, $name)) {
return call_user_func_array(array($part, $name), $arguments);
}
}
throw new Exception();
}
}
class A {
public static function a() {}
}
class B {
public static function b() {}
}
PHP 5.4将supposedly包含特征,这是一种在类中包含外部代码的更直接的方法:
class foo {
use A, B;
}
trait A {
public static function a() {}
}
trait B {
public static function b() {}
}
标签:php,function,require,class
来源: https://codeday.me/bug/20190518/1128158.html