useHello\World\NotExistClass;echoNotExistClass::class;// Hello\World\NotExistClass$c=newNotExistClass();// Fatal error: Uncaught Error: Class "Hello\World\NotExistClass" not found in ...
useHello\World\NotExistClass;echoNotExistClass::class;// Hello\World\NotExistClass$c=newNotExistClass();// Fatal error: Uncaught Error: Class "Hello\World\NotExistClass" not found in ...
高认可度评论:
因为
use
发生在编译时
,不是运行时
,引入任意的类
、函数
和常量
都不会报错。还有一个类关键字
::class
的解析也是发生在编译时
,所以以下这种代码也不会报错,而且还会正常输出:你没new,一new就报错了
use后用的时候才会加载吧
use 的时候不会报错。但是会在你使用该类的时候报错。
因为
use
发生在编译时
,不是运行时
,引入任意的类
、函数
和常量
都不会报错。还有一个类关键字
::class
的解析也是发生在编译时
,所以以下这种代码也不会报错,而且还会正常输出:PHP是脚本语言,运行时报错,这也不是语法错误,没有运行到所以不报错
stackoverflow
同样问题的回答:stackoverflow.com/questions/414035...PHP官网
相关内容:www.php.net/manual/zh/language.nam...一位
laravel核心成员
@Tim MacDonald同样问题的博文:timacdonald.me/php-be-all-like-tha...因为在 PHP 中,
use
关键字有且只有一个作用 「命名空间导入」,其只是引入命名空间,方便后续代码而已(可以理解为类的别名,仅仅是为了后续代码使用类时不必每次都写全完整的命名空间),use
非import
,并不存在类文件的导入,PHP 本身并不涉及任何类的自动加载。你在使用一些框架时,会发现没有
require
一个类文件,但可以直接使用,需要注意的是,这里并非是use
引入了文件,而是composer
通过代码逻辑自动引入了这个文件,详情可见项目目录下vendor/composer/
下的文件。