Carbon 实例失败
instanceof Carbon fails
在我的应用程序中,我使用如下内容
if($val instanceof Carbon)
...
不幸的是,除非我之前在代码中使用 Carbon(即使只是 Carbon::now();
),否则它总是 return 错误。为什么?
您正在使用 Laravel 的 class 自动加载器。您已在 config/app.php
:
定义了它
'Carbon' => Carbon\Carbon::class,
... 所以当您第一次 运行 时:
Carbon::now();
... PHP 需要一个尚未定义的 Carbon
class 所以 class 自动加载被触发并且 Laravel 加载 Carbon\Carbon
命名空间并定义了一个 Carbon
别名。因此 $val instanceof Carbon
可以 return true
如果变量具有正确的类型。
但是,instanceof
本身不会触发class自动加载。 Documentation 表示它过去曾这样做,但现在不再这样做了:
Before PHP version 5.1.0, instanceof would call __autoload() if the class name did not exist.
(我承认,如果您还没有加载 class,我仍然没有解释如何使 $val
成为 Carbon 的一个实例。 )
在我的应用程序中,我使用如下内容
if($val instanceof Carbon)
...
不幸的是,除非我之前在代码中使用 Carbon(即使只是 Carbon::now();
),否则它总是 return 错误。为什么?
您正在使用 Laravel 的 class 自动加载器。您已在 config/app.php
:
'Carbon' => Carbon\Carbon::class,
... 所以当您第一次 运行 时:
Carbon::now();
... PHP 需要一个尚未定义的 Carbon
class 所以 class 自动加载被触发并且 Laravel 加载 Carbon\Carbon
命名空间并定义了一个 Carbon
别名。因此 $val instanceof Carbon
可以 return true
如果变量具有正确的类型。
但是,instanceof
本身不会触发class自动加载。 Documentation 表示它过去曾这样做,但现在不再这样做了:
Before PHP version 5.1.0, instanceof would call __autoload() if the class name did not exist.
(我承认,如果您还没有加载 class,我仍然没有解释如何使 $val
成为 Carbon 的一个实例。 )