在laravel 4中自动使用包装中的外墙

时间:2013-02-18 23:33:41

标签: php laravel laravel-4

我正在开发一些基于主应用程序中的代码的软件包,或者基于在应用程序而不是软件包中编写代码的示例。我一直忘记在各种文件中添加Use View;Use Controller;,并且必须手动检查并将其添加到包中的每个PHP脚本(需要它们)中。

有没有办法自动化这个,所以我只需要在一个包中声明它们一次,或者更好的是让它们传递到主应用程序中的外观?

1 个答案:

答案 0 :(得分:1)

我担心没有。

这是因为您的包代码有自己的命名空间,Illuminate核心也是如此。 PHP的use-statements仅基于每个文件。 当您的脚本使用其他命名空间中的类时,您有2个选项。

  • 添加use-statements(到Facades)以将该类别名为当前名称空间
  • 引用外观的完整命名空间(从全局命名空间开始),Laravel自动创建的全局命名空间中的别名(\ View),或外观的原始完整命名空间(\ Illuminate \ Support \ Facades \视图)

引用完整命名空间的示例:

<?php

namespace My\Package;

class SomeClass
{
    public function doSomething()
    {
        // reference full namespace
        $view = \Illuminate\Support\Facades\View::make('someview');
        // or
        $view = \View::make
    }
}

?>

这似乎是一种不必使用use-statements的方法,但在我看来情况更糟。所以我建议你习惯于添加这些用语。

您应该将其视为最佳实践:这些use-statements清楚地说明了您的类(或文件)的依赖关系。尝试减少这些数量总是更好。