欢迎 我有一个文件config.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 D\FacebookBundle\Facebook;
use Symfony\Component\Yaml\Yaml;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use D\FacebookBundle\Facebook\Facebook;
use D\FacebookBundle\Facebook\FacebookConfig;
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文件中获取变量? 我问一个例子?
答案 0 :(得分:1)
在您的配置文件中,您将拥有以下内容:
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类作为服务并使用依赖注入来设置参数。所以在你的services.yml:
services:
facebook:
class: Path\To\Facebook
arguments:
- '%d_facebook%' # This injects your parameters
你可以在控制器中执行:
$facebook = $this->get('facebook');
再次阅读有关服务的部分。 http://symfony.com/doc/current/book/service_container.html
答案 1 :(得分:0)
也许你想做expose a semantic configuration for a bundle之类的事情?
如果您想从根级别配置“命名空间”(例如“d_facebook”)获取配置。您将在bundle的DependencyInjection文件夹中创建Configuration和Extension类。配置类将有一个'getConfigTreeBuilder'方法,该方法将定义可以在命名空间中的键的设置。然后扩展类将有一个'load'方法,它将接收已解析的配置,并能够使用$ container-&gt; setParameter('key','value')来允许访问其他类中的配置。链接的食谱有更多细节。