如何在php中导入带有命名空间的静态函数?
类A在命名空间1中声明如何在php中导入带有命名空间的静态函数?,php,namespaces,php-5.4,php-5.5,Php,Namespaces,Php 5.4,Php 5.5,类A在命名空间1中声明 namesapce namesapce1; class A { public static function fun1() { } } 我想在类B中使用fun1(): namespace namesapce2; use ???? as fun1 class B { public static func2() { fun1(); } } 怎么做 namespace namespace2; use namespa
namesapce namesapce1;
class A
{
public static function fun1()
{
}
}
我想在类B中使用fun1():
namespace namesapce2;
use ???? as fun1
class B
{
public static func2()
{
fun1();
}
}
怎么做
namespace namespace2;
use namespace1\A;
class B
{
public static function func2()
{
A::fun1();
}
}
假设您使用的是自动加载或必要的包含功能。谢谢您的回答,但我想编写fun1()而不是::fun1()?我认为
use
关键字不可能从这样的类导入特定函数。看见用fun1()
而不是A::fun1()
来调用它背后的原因是什么?因为我想在我的代码中大量使用它,并且没有必要每次都调用A::fun1()!如果静态函数需要在类中,恐怕您没有选择权。您可以从类中删除静态函数,使其成为单独命名空间中某个文件中的典型函数,然后将该文件包含在命名空间2中与您的类相同的文件中(即require\u once\uu DIR\uu.'/namespace1\u functions.php'
。然后您可以根据需要调用它,例如fun1()
我也应该对此进行一点扩展。要实现这一点,您需要按照前面所述执行require命令,但是如果函数位于不同的命名空间中,并且希望像在当前命名空间中一样使用它,则需要使用use
语句来导入该函数。例如use function namespace1\fun1;
。导入类似于use
语句的特定函数需要PHP5.6+。如果在工具链上执行cpp:#定义use_static(class,name)function name(){return class::name(func_get_args());}