从扩展 PHP 类中的静态调用中检索类名
在 PHP 世界中,经常需要从静态中确定类名函数调用,尤其是在使用扩展类时。考虑以下场景:
<code class="php">class Action { function n() {/* some implementation */} } class MyAction extends Action {/* further implementation */}</code>
在这种情况下,调用 MyAction::n();应该返回“MyAction”作为类名。但是, __CLASS__ 变量仅返回父类名称(“Action”)。
晚期静态绑定(PHP 5.3):
PHP 5.3 引入了晚期静态绑定,这使得能够在运行时解析目标类。此功能使得可以使用 get_used_class() 函数确定被调用的类:
<code class="php">class Action { public static function n() { return get_called_class(); } } class MyAction extends Action { } echo MyAction::n(); // Output: MyAction</code>
替代方法(PHP 5.3 之前):
PHP 之前5.3,替代解决方案依赖于使用非静态方法和 get_class() 函数:
<code class="php">class Action { public function n(){ return get_class($this); } } class MyAction extends Action { } $foo = new MyAction; echo $foo->n(); // Output: MyAction</code>
记住,此方法仅适用于非静态方法,因为 get_class() 函数需要一个实例类作为参数。
以上是如何从扩展 PHP 类中的静态方法调用中检索类名?的详细内容。更多信息请关注PHP中文网其他相关文章!