Edit report at https://bugs.php.net/bug.php?id=64871&edit=1
ID: 64871 Updated by: vr...@php.net Reported by: vr...@php.net Summary: The ::class operator should verify the class name Status: Wont fix Type: Feature/Change Request Package: Class/Object related Operating System: Any PHP Version: 5.5.0RC1 Assigned To: ralphschindler Block user comment: N Private report: N New Comment: Makes sense, thanks for the explanation. Previous Comments: ------------------------------------------------------------------------ [2013-05-17 17:16:08] ralphschind...@php.net I believe this came up, and I wouldn't support this. This would be inconsistent with the current implementation of namespaces. use Foo\Bar\Baz; for example, does not check the existence of Baz on "use". It is not not till a type is used (either statically called or used to create a new instance of via new) that it will trigger autoloading (if there is one). There are many places in PHP where type names are used, method signatures, and even in the following example: $x = new stdClass; var_dump($x instanceof FooBar); PHP will not attempt to autoload FooBar to for the purposes of instanceof. If you need to know that a particular type exists, class_exists(foo::class, true); should do what you need. If you feel differently, I think you should bring this up on the internals mailing list. ------------------------------------------------------------------------ [2013-05-17 16:49:21] vr...@php.net Ralph, what's your take on this? ------------------------------------------------------------------------ [2013-05-17 16:48:42] vr...@php.net Description: ------------ One of the main advantages of the ::class operator could be that it verifies the class name upon creating the string instead of upon usage. It should trigger autoloading if the class doesn't exist. I know that it's somewhat late to change this in PHP 5.5 but I was really surprised by the lack of this feature and about the fact that it wasn't considered in RFC. Test script: --------------- <?php // I want to know about this typo. echo stdClas::class; Expected result: ---------------- Fatal error: Class 'stdClas' not found Actual result: -------------- stdClas ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=64871&edit=1