如何从文件 config.yml 中获取变量



Welcome我有一个文件配置.yml

d_facebook:
    file:   %kernel.root_dir%/../src/FacebookBundle/Facebook/FacebookInit.php
    app_id: 296925470418713
    secret: fb4d0a99bcf80e55f47077ffadcac921
    cookie: true
    permissions: [email, user_birthday, user_location, user_about_me, user_location]

然后我有这个类,它从文件 config.yml 中检索数据

<?php
namespace DFacebookBundleFacebook;
use SymfonyComponentYamlYaml;
use SymfonyComponentDependencyInjectionContainerBuilder;
use DFacebookBundleFacebookFacebook;
use DFacebookBundleFacebookFacebookConfig;
class FacebookInit
{
    public $hAPI;
    public $userProfile;
    public $user;
    public $logoutUrl;
    public $loginUrl;
    public $config;
    public function __construct()
    {
        $this->config = Yaml::parse('/facebookx/app/config/config.yml');
        $this->hAPI = new Facebook(array(
            'appId' => $this->config['d_facebook']['app_id'],
            'secret' => $this->config['d_facebook']['secret']
            ));
        $this->setUserProfile();
    }
}

有什么更好的方法呢?如何从文件 config.yml 中获取变量?我举个例子?

在你的配置文件中,你会有类似的东西:

parameters:
    d_facebook:
        file:   %kernel.root_dir%/../src/FacebookBundle/Facebook/FacebookInit.php
        app_id: 296925470418713
        secret: fb4d0a99bcf80e55f47077ffadcac921
        cookie: true
        permissions: [email, user_birthday, user_location, user_about_me, user_location]

从 S2 控制器中,您可以通过以下方式获取参数数组:

$faceBookParameters = $this->container->getParameter('d_facebook');

但是,您可能希望将Facebook类设置为服务,并使用依赖注入来设置参数。 所以在你的服务中.yml:

services:        
    facebook:
        class:  PathToFacebook
        arguments:  
            - '%d_facebook%'  # This injects your parameters

在您的控制器中,您只需执行以下操作:

$facebook = $this->get('facebook');

再次通读有关服务的部分。 http://symfony.com/doc/current/book/service_container.html

也许您想做一些事情,例如公开捆绑包的语义配置?

这是如果您想从根级配置"命名空间"(如"d_facebook")获取配置。 您将在捆绑包的依赖关系注入文件夹中创建一个配置和一个扩展类。 配置类将具有"getConfigTreeBuilder"方法,该方法将定义命名空间中可以包含的键的设置。 然后,扩展类将具有一个"load"方法,该方法将接收解析的配置,并能够使用$container->setParameter('key', 'value')来允许访问其他类中的配置。 链接的食谱有更多详细信息。

最新更新