php – 差异static :: class vs get_called_class()和__CLASS__
我已经看过几个线程,人们会问如何在
PHP中获取类或对象的名称.但是,我无法看到解释各种可能性之间的差异.我希望这里有人可以帮助我.
因此,为了获得被调用类的类名,我知道两种可能性: > get_called_class() (get_class($this)表示非静态类) 为了获得放置代码的类的类名,我知道这三种可能性: > get_class() 我现在可能忽视哪些差异?单向另一种方式的潜在冒险和缺点是什么?
之间的差异
当您将对象实例指针作为第一个也是唯一的参数传递时,它返回一个类名,包括当前类的限定名称空间(不带参数)或任何指定的对象实例.
返回限定名称空间和当前类名的魔术常量.在这里,您无法测试其他对象的类名.
仅自PHP 5.5起可用.它使用类名和命名空间解析来获取信息,因此它不需要事先实例化类.另请注意:
测试 <?php namespace nTest; trait tTest { function __toString() {return get_class();} function className() {return __CLASS__;} // per PHP 5.4 function traitName() {return __TRAIT__;} } class cTest { use tTest; function usedTraitName() {return __TRAIT__;} } class cClassWithoutObject {} $oTest = new cTest; header('Content-type: text/plain'); print // Output: $oTest . PHP_EOL // 'nTest::cTest' . get_class($oTest) . PHP_EOL // 'nTest::cTest' . $oTest->className() . PHP_EOL // 'nTest::cTest' . $oTest->traitName() . PHP_EOL // 'nTest::tTest' (trait!) . $oTest->usedTraitName() . PHP_EOL // '' (no trait!) . cTest::class . PHP_EOL // 'nTest::cTest' . cClassWithoutObject::class; // 'nTest::cTestNotInstantiated' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |