Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中导入带有命名空间的静态函数?_Php_Namespaces_Php 5.4_Php 5.5 - Fatal编程技术网

如何在php中导入带有命名空间的静态函数?

如何在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

类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 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());}