Facades 类中的 Laravel 常量

标签 laravel laravel-4 facade laravel-facade

我有一个类(class)叫 Awesome并使用了 ServiceProviderFacade将其注册到应用程序。现在我可以将它用作 Awesome::Things() .

我想在这个类中添加常量,所以我试过了

<?php namespace Helper\Awesome;
class Awesome()
{
    public static $MOVIE = 'I love the Lego Movie!";
}

但是当我打电话时 Awesome::$MOVIE , 我得到 Access to undeclared static property: Helper\\Aesome\\Facades\\AwesomeFacade::$MOVIE
有人可以帮忙吗?

最佳答案

简短的版本是——你真的不想那样做。 Laravel 外观并不意味着像普通类一样使用,如果您的应用程序以这种方式使用它们,您可能会混淆 future 的开发人员。

警告不要挡路。当你在 Laravel 中创建一个“facade”时,你实际上是在创建一个 class alias .当您添加 Awesomealiasapp/config/app.php 中列出,在某些时候运行如下代码

class_alias('Helper\Aesome\Facades\AwesomeFacade','Awesome');

这意味着每当您使用全局非命名空间类 Awesome , PHP 替代品 Helper\Aesome\Facades\AwesomeFacade .如果要添加常量,则需要将它们添加到此类中。

Laravel 能够通过方法是因为基础 Facade类实现了 __callStatic将您的调用传递给实际服务实现对象的方法。 Facades 不传递静态常量访问。此外,PHP 没有(似乎?)有类似的魔法方法来传递常量请求。

如果您对此答案的深入版本感到好奇,我目前正在写 a series on Laravel's object system ,包括一些深入的信息 about the facade implementation .

关于Facades 类中的 Laravel 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26662133/

相关文章:

javascript - 创建一个没有 Action 的 Laravel Blade Form

php - 雷迪斯 : is it possible to share datetimes directly between php/laravel and python?

php - 根据 PHP 函数值自定义 MySQL Order By

sql - Laravel Eloquent 连接表和计数相关

php - Laravel-4 中的 Facade 和 Service Provider 问题

laravel - 如何获取当年的所有记录?

javascript - 如何在 Laravel 7 中通过外部 javascript 从 View 调用 Controller 函数?

php - 将通配符传递给 Laravel 4 中的路由

design-patterns - DataAdapter 使用外观模式还是适配器模式。

c++ - 我可以使用 std::vector 作为预分配(原始)数组的外观吗?