Laravel5:访问另一个类中的公共变量

时间:2015-06-15 10:10:14

标签: php class oop laravel laravel-5

我有一个名为LanguageMiddleware.php的中间件文件:

...
class LanguageMiddleware {

    //ISO language codes:
    public $languages = ['en','es','fr','de','pt','pl','zh','ja'];
    ...

LanguageMiddleware.php位于laravelProj/app/Http/Middleware/

这是我的问题:我有一个名为master.blade.php的刀片模板文件,我试图输出语言列表

@foreach (App\Http\Middleware\LanguageMiddleware\languages as $lang)
    <a class=\"setLang\" href=\"lang/en\">{{ Locale::getDisplayLanguage($lang, $lang) }}</a><br>
@endforeach

我需要访问$languages

中的LanguageMiddleware.php变量

master.blade.php位于laravelProj/resources/views/layouts/

如何访问另一个类中的变量?

2 个答案:

答案 0 :(得分:2)

这是简单的PHP内容。将该属性设置为static,然后使用::访问它。

class LanguageMiddleware {
    public static $languages = ['en','es','fr','de','pt','pl','zh','ja'];
}

@foreach (App\Http\Middleware\LanguageMiddleware::$languages as $lang)
    ...
@endforeach

但你不应该在中间件中拥有它。您最好使用该数组添加配置(即 /config/app.php ),并使用Config::get访问它。

答案 1 :(得分:1)

最好的方法是让一个具有可以在其范围之外访问的函数的类。我通常会在这里做类似的事情:

在app目录中,您可以创建一个新目录(例如libs),

LanguageMiddleware.php放在那里,

class LanguageMiddleware{
 static function languages($lang){
   //Do your languages code here
}
}

app/start/global.php pp_path().'/libs'addDirectories添加composer.json, 然后在"app/libs"中添加autoLoad@foreach(LanguageMiddleware::languages($lang)) <a class=\"setLang\" href=\"lang/en\">{{ Locale::getDisplayLanguage($lang, $lang) }}</a><br> @endforeach 数组。

在您的刀片模板中,您可以执行以下操作:

ExampleTable

这样,类及其功能现在可以在项目中调用它的任何地方使用。