1

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

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

4

1 回答 1

1

恐怕没有。

这是因为你的包代码有自己的命名空间,Illuminate 核心也是如此。PHP 的使用语句仅基于每个文件。当您的脚本使用来自另一个命名空间的类时,您有 2 个选项。

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

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

<?php

namespace My\Package;

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

?>

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

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

于 2013-03-02T14:06:45.400 回答