我以前从未在PHP中看过这个,并且没有线索如何搜索这个。我正在提取一些Java示例,这实际上并没有帮助。
具体来说,我在主要Spark对象中的scriptVariables()
方法中看到了Laravel的Spark。我知道这是做什么的,但是这与简单的写作有什么区别:SomeClass::someMethod()
?
如果存在,请告诉我手册中的正确位置。请指出我正确的方向。
答案 0 :(得分:2)
::class
和静态调用::someMethod()
之间的实际差异是任何对象上的::class
都将返回类的FQCN(完全限定的类名)。采用以下示例类:
namespace Macondo\Buendia\Admin;
class User {}
运行以下内容;
echo Macondo\Buendia\Admin\User::class;
或
use Macondo\Buendia\Admin\User;
echo User::class;
两者都会回归:
Macondo\Buendia\Admin\User
这使得它变得相当容易,例如在Laravel的路由声明中创建一个体面的,持久的方法来定义控制器动作:
Route::get('/', App\Http\Controllers\HomeController::class . '@home');
Route::get('/dashboard', App\Http\Controllers\HomeController::class . '@dashboard');
https://laravel.com/docs/5.6/controllers#controllers-and-namespaces
要澄清一点,SomeController::class . '@someMethod'
不是静态调用。 Laravel将使用" Container"解决特定的控制器和方法。 (也称为控制/ ioc的反转)。