Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在模型类中读取Symfony2中的配置值_Php_Symfony - Fatal编程技术网

Php 如何在模型类中读取Symfony2中的配置值

Php 如何在模型类中读取Symfony2中的配置值,php,symfony,Php,Symfony,我已经在我的config.yml中定义了一个hash salt,希望在我的用户类中得到它,关于如何做到这一点有什么想法吗?我已经看到了大量关于如何在控制器类中使用它的示例,但没有在模型中使用 谢谢我也有同样的问题。如果symfony1中有类似于sfConfig::get()的东西就好了。无论如何,我认为这实际上可能是一个“有更好的方法来做这件事”的例子。如果在实例化用户类时使用setter注入(即使用setHashSalt()方法),会怎么样?如果您是从控制器实例化,则可以使用$this->co

我已经在我的config.yml中定义了一个hash salt,希望在我的用户类中得到它,关于如何做到这一点有什么想法吗?我已经看到了大量关于如何在控制器类中使用它的示例,但没有在模型中使用


谢谢

我也有同样的问题。如果symfony1中有类似于
sfConfig::get()
的东西就好了。无论如何,我认为这实际上可能是一个“有更好的方法来做这件事”的例子。如果在实例化用户类时使用setter注入(即使用
setHashSalt()
方法),会怎么样?如果您是从控制器实例化,则可以使用
$this->container->parameters['hash_salt']

抱歉,如果不使用
容器
对象,就无法访问config.yml参数。我很想知道是否有人有更简单的方法。

请看我的答案:

  • 第一种方法:分离配置块,将其作为参数获取
  • 第二种方法:分离配置块,将配置注入服务
回答您,如果您想将其注入
模型
,最好的方法是让
管理器
充当模型的工厂,然后管理器可以将自身注入模型,这样模型就可以访问它,从而访问配置

比如说,你的模型有一辆
Car
和一座
House
如果它们相关,你可以有一个
CityManager
和一个
getAllCars()
getCarById()
或类似的,以及一个
getAllHouses()
getHouseById()
等等

然后在
CityManager
中将配置传递给
Model
类:

class CityManager()
{
    private $myConfigValue;

    public getCarById( $id )
    {
        return new Car( $id, $this->myConfigValue );
    }
}
或者传递您自己,让
模型
仅在需要时获取配置:

class CityManager()
{
    private $myConfigValue;

    public getCarById( $id )
    {
        return new Car( $id, $this );
    }

    public getConfig()
    {
        return $this->myConfigValue;
    }
}

填写链接文章中的值。

+1,注入参数是前进的方向(还有
$this->container->getParameter()
方法)-在控制器中检索它并将其传递给模型。