我正在寻找以下 PHP 函数:
class foo
{
}
echo get_class_special(foo); // returns the string 'foo'
PHP有没有一个函数可以在不创建类的实例的情况下获取类的名称?
我正在寻找以下 PHP 函数:
class foo
{
}
echo get_class_special(foo); // returns the string 'foo'
PHP有没有一个函数可以在不创建类的实例的情况下获取类的名称?
<?php
class Foo {
const NAME = __CLASS__;
// or
public static $NAME = __CLASS__;
// or
public static function getName() {
return __CLASS__;
}
}
Foo::NAME; // Foo
// or
Foo::$NAME; // Foo
// or
Foo::getName(); // Foo
?>
class
类型的对象,类是通过它们的名称来表示的。因此,如果你在应用程序中写了foo
,你会得到一个警告,并且foo
将被解释为字符串'foo'
- 即使有一个同名的类。$class = 'Foo';
$class::staticFuntion(); // will call Foo::staticFunction()
这甚至更进一步,你可以使用变量引用变量:
$className = 'Foo';
$ref = 'className';
$$ref::staticFunction(); // will call Foo::staticFunction()
class foo {
public static function myClass() {
return get_class($this);
}
}
在你的代码中,你可以使用
foo::myClass(); //return string 'foo'
但是在这里,您需要知道类的名称才能调用它,因此有些多余。如果例如您想要获取类的属性而不实例化它,因为当开发代码时它们可能会发生变化,那么这将是有意义的。
我猜没有办法在没有对象的情况下获取类名。但是如果你的实例只声明了一个类,那么你可以使用以下方法来获取它。
get_declared_classes();
foo
并期望得到foo
返回值,如果类名是bar
,你会放入bar
并得到bar
返回值... - CodeCaster