如何称呼laravel内的苗条容器雄辩

时间:2018-05-09 15:28:58

标签: php laravel eloquent slim slim-3

我使用苗条3与laravel雄辩“照亮/数据库”:“^ 5.6”,

在我的瘦身代码示例中

在Container

中定义语言类
$container['language'] = function($container){
    return new \App\Library\Language($container);
};

在语言类中我有函数getLanguageId()并且此值在start应用程序中传递(在此示例中返回语言id = 1)

在模特博客中

<?php

use Illuminate\Database\Eloquent\Model;

class Blog extends Model
{
    protected $table = 'blog';
    protected $primaryKey = 'blog_id';

    public function getLanguageId(){
       // I need access to Slim container here
// Example return $container->get('language')->getLanguageId()
// It's possible to do ?
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

通过构造函数传递语言ID:

<?php

use Illuminate\Database\Eloquent\Model;

class Blog extends Model
{
    private $lang;

    public function __construct($lang)
    {
        $this->lang = $lang;
    }

    public function getLanguageId()
    {
       return $this->lang;
    }
}

不要依赖于任何地方的容器而落入服务定位器反模式。所以创建这样的对象:

$lang = $container->get('language')->getLanguageId();
$blog = new Blog($lang);