在我的应用程序中,我使用了如下内容
if($val instanceof Carbon)
...不幸的是,除非我以前在代码中使用碳 (即使只是Carbon::now();),否则它总是返回false。为什么?
发布于 2016-03-30 07:45:15
你用的是拉勒维尔的类自动装载机。您已经在config/app.php中定义了这个
'Carbon' => Carbon\Carbon::class,..。因此,当您第一次运行该程序时:
Carbon::now();..。PHP需要一个尚未定义的Carbon类,因此会触发类自动加载,而Laravel加载Carbon\Carbon命名空间并定义Carbon别名。因此,如果变量具有正确的类型,$val instanceof Carbon可以返回true。
然而,instanceof 本身不会触发类自动加载.文档表示,过去曾这样做过,但现在不再这么做了:
在PHP5.1.0之前,如果类名不存在,instanceof将调用__autoload()。
(我承认,如果还没有加载类,我仍然无法解释如何使$val成为碳的一个实例。)
https://stackoverflow.com/questions/36288114
复制相似问题