5

是否有内置的静态方法或属性来引用 PHP 类,以便在上下文中将其表示为字符串?例如:

而不是这个:

$obj->tempFn('MyClass') //MyClass being the name of the class

我想做这个:

$obj->tempFn(MyClass) //Directly references the class name, instead of a string representation
4

3 回答 3

7

不,但是您可以在您的类中定义一个包含类名的常量,例如:

class foo{
  const  
    NAME = 'foo';
}

并像访问它一样foo::NAME

PHP 5.5中,您将能够使用:

foo::class
于 2013-02-20T16:38:01.947 回答
2

echo get_class($this);应该在课堂内工作。

echo __CLASS__;我相信这是一个静态属性

于 2013-02-20T16:33:51.247 回答
0

如果真的想避免静态,我认为反射类可能会起作用。

function getClassName(ReflectionParameter $param) {
    preg_match('/\[\s\<\w+?>\s([\w]+)/s', $param->__toString(), $matches);
    return isset($matches[1]) ? $matches[1] : null;
}

这是来自http://www.php.net/manual/en/reflectionparameter.getclass.php的评论

于 2013-02-20T16:53:53.967 回答