Php 完全限定接口名
有没有一种方法可以获得类似于Php 完全限定接口名,php,Php,有没有一种方法可以获得类似于MyClass::class的完全限定接口名 例如: namespace Example\Tests; use Example\Interfaces\InputInterface; ... class CommandTest ... ... public function createInputMock() { // I want to replace next string with something similar to MyClass::class
MyClass::class
的完全限定接口名
例如:
namespace Example\Tests;
use Example\Interfaces\InputInterface;
...
class CommandTest ...
...
public function createInputMock()
{
// I want to replace next string with something similar to MyClass::class
$this->getMockBuilder('Example\Interfaces\InputInterface')
...
谢谢。如果我没记错的话,您不能使用
::class
表示法转到PHP5.5,因此您希望在5.4或更早版本的vesrion中使用类似的东西
所以简单的答案是——不,没有办法
在PHP的早期版本中缺少这一功能正是核心开发人员向PHP5.5添加::class
的原因
如果是类名,你可以进行一次奇怪的肮脏攻击:在新实例上使用,但不要这样做。名称解析可以用于任何导入的名称空间:类、接口、函数
namespace A\B\C {
interface Interface_Bar {}
function Function_Foo() {}
function Function_Foo_Bar() {}
const Const_BARFOO = 123;
}
namespace {
use A\B\C\Interface_Bar;
use A\B\C;
use Undefined\Classes\UndefinedClass;
use function A\B\C\Function_Foo_Bar;
use const A\B\C\Const_BARFOO;
echo Interface_Bar::class, "\n"; // print A\B\C\Interface_Bar
echo C\Function_Foo::class, "\n"; // print A\B\C\Function_Foo
echo C\Const_BARFOO::class, "\n"; // print A\B\C\Const_BARFOO
echo UndefinedClass::class, "\n"; // print Undefined\Classes\UndefinedClass
echo Function_Foo_Bar::class, "\n"; // print Function_Foo_Bar <- warning
echo Const_BARFOO::class, "\n"; // print Const_BARFOO <- warning
}
名称空间A\B\C{
接口{}
函数函数_Foo(){}
函数函数函数_Foo_Bar(){}
const const_BARFOO=123;
}
名称空间{
使用\B\C\Interface\u栏;
使用A\B\C;
使用未定义\类\未定义类;
使用函数A\B\C\function\u Foo\u Bar;
使用常量A\B\C\const\u BARFOO;
echo接口\u栏::类,“\n”//打印一个\B\C\Interface\u栏
echo C\Function\u Foo::class,“\n”//打印A\B\C\Function\u Foo
echo C\Const\u BARFOO::class,“\n”//打印A\B\C\Const\u BARFOO
echo UndefinedClass::class,“\n”//打印Undefined\Classes\UndefinedClass
echo函数\u Foo\u Bar::class,“\n”//print函数\u Foo\u BarInputInterface::class
不好?谢谢。我在与接口相关的php文档中没有找到这个,所以我认为它只适用于类名。您可以将注释作为答案发布,我会接受它。