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')来允许访问其他类中的配置。 链接的食谱有更多详细信息。