我创建了一个名为ApiComponent
的组件来处理打开HttpSocket到另一台服务器以发布信息。它看起来像这样:
class ApiComponent extends Component {
public function connect($endpoint,$data) {
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
// rest of the code
}
}
这可以理解为我可以从我的控制器调用$this->Api->connect('/posts/add.json',$data);
并且代码按预期执行。
但是,我在$HttpSocket->request
中有很多设置,例如主机名,端口号,用户名,密码等,我想从组件中取出并放入配置文件。< / p>
根据http://book.cakephp.org/2.0/en/controllers/components.html#including-your-component-in-your-controllers我可以从AppController将参数传递给Component,如下所示:
public $components = array(
'Api' => array(
'host' => 'localhost',
'port' => '80'
),
'Session', 'Auth'
);
手册说这会将数组传递给ApiComponent::__construct()
,但它没有说明我应该如何访问组件中的数据(或者,它可能......我在陌生的领域这里)。
所以,我的问题是:
1)在AppController中添加主机,用户名,密码等内容是否合适?和...
2)......如果是这样,我如何从组件中访问它们?
...或...
3)...如果没有,我应该在哪里放置这样的设置?
答案 0 :(得分:1)
在您的ApiComponent中,您的设置存储在:
$this->settings
请参阅API
我不完全赞同@Lionel Chan:我认为将这些值存储在组件设置中并不是一个坏主意。但是使用Configure类也是一种很好的做法。
答案 1 :(得分:0)
不,这不合适(所以不清楚)。控制器用于系统/业务逻辑,而不用于配置。
(和3.)您可以使用以下方法存储配置:
好老不断的方式:
这很简单,只需define(key, value)
bootstrap.php
Configure::write()
这些凭据就可以了,而且它可以全球访问。
使用Configure
类
配置非常方便,因为它是CakePHP的全局。您只需bootstrap.php
在{{1}}文件中写入凭据即可。是的,如果你不介意,它会有一些小的开销,但不应该引人注意。