我有一些自定义应用程序特定设置,我想放入配置文件.我会把这些放在哪里?我考虑过/config/autoload/global.php和/或local.php.但是我不确定在配置数组中应该使用哪些密钥以确保不覆盖任何系统设置.
我在考虑这样的事情(例如在global.php中):
return array(
'settings' => array(
'settingA' => 'foo',
'settingB' => 'bar',
),
);
Run Code Online (Sandbox Code Playgroud)
这是一种令人愉快的方式吗?如果是这样,我如何从控制器内访问设置?
提示非常感谢.
我目前正在开发基于新版本2.0.2的第一个ZF应用程序.(我对ZF1没有任何经验)
现在我需要使用OAuth进行身份验证,我想知道是否已经有ZF2的实现.我知道有一个ZF1模块.
如果没有,你会推荐什么?使用PHP的原生OAuth支持?
谢谢你的帮助!罗伯托
简而言之我的问题:我可以为多个控制器使用单个工厂吗?
更多细节:
我在/config/autoload/global.php中有一些全局非模块特定设置,如下所示:
return array(
'settings' => array(
'setting_a' => 'foo',
'setting_b' => 'bar'
),
// More ZF default configuration ...
);
Run Code Online (Sandbox Code Playgroud)
现在,我希望在每个控制器中都可以访问这些设置,而无需一直打电话$this->getServiceLocator()->get('config').
所以我的想法是$settings在我的中引入一个类属性,AbstractController其中注入了配置数组.我试图直接在构造函数中获取配置AbstractController.但是getServiceLocator()当时似乎没有准备好并返回NULL.
我可以为每个控制器构建Controller Factories并注入如下设置:
class ControllerFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator) {
$config = $serviceLocator->get('config');
return new \MyModule\Controller\MyController($config['settings']);
}
}
Run Code Online (Sandbox Code Playgroud)
但它会一遍又一遍地相同.所以我的问题是:我可以为多个控制器使用单个工厂吗?
在我的module.config.php中,我可以为多个控制器指定一个工厂类:
return array(
'controllers' => array(
'factories' => array(
'MyModule\Controller\MyControllerA' => 'MyModule\Factory\ControllerFactory',
'MyModule\Controller\MyControllerB' => 'MyModule\Factory\ControllerFactory',
'MyModule\Controller\MyControllerC' => 'MyModule\Factory\ControllerFactory',
)
),
); …Run Code Online (Sandbox Code Playgroud) 我正在使用Node和Express实现RESTful API.说到路由,目前它看起来像这样:
var cat = new CatModel();
var dog = new DogModel();
app.route('/cats').get(cat.index);
app.route('/cats/:id').get(cat.show).post(cat.new).put(cat.update);
app.route('/dogs').get(dog.index);
app.route('/dogs/:id').get(dog.show).post(dog.new).put(dog.update);
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个有两个原因:
我喜欢这样的东西(当然不行):
app.route('/cats', function(req, res)
{
var cat = new CatModel();
this.route('/').get(cat.index);
this.route('/:id').get(cat.show).post(cat.new).put(cat.update);
});
app.route('/dogs', function(req, res)
{
var dog = new DogModel();
this.route('/').get(dog.index);
this.route('/:id').get(dog.show).post(dog.new).put(dog.update);
});
Run Code Online (Sandbox Code Playgroud)
现代Express中是否有一种干净的方式,没有任何其他模块(如express-namespace)?我可以为每个模型选择单独的路由器并为其分配app.use('/cats', catRouter).但是,如果我有多个层次结构级别'/tools/hammers/:id'怎么办?然后我会在路由器内的路由器中安装路由器,这对我来说似乎有些过分.
租赁系统使用预订表来存储所有预订和预订:
booking | item | startdate | enddate
1 | 42 | 2013-10-25 16:00 | 2013-10-27 12:00
2 | 42 | 2013-10-27 14:00 | 2013-10-28 18:00
3 | 42 | 2013-10-30 09:00 | 2013-11-01 09:00
…
Run Code Online (Sandbox Code Playgroud)
假设用户想要从2013-10-27 12:00直到2013-10-28 12:00租用项目42,这是一天的时间段.系统将告诉他,该项目在给定的时间范围内不可用,因为预订号码.2碰撞.
现在,我想建议所选项目再次可用的最早租赁日期和时间.当然,考虑用户所需的时间段(1天),从用户期望的日期和时间开始.
所以在上面的例子中,我正在寻找一个返回2013-10-28 18:00的SQL查询,因为自2013-10-27 12:00以来最早的项目42将可用1天,是2013-10-28 18:00至2013-10-29 18:00
因此,我需要找到预订之间的差距,这个差距足以容纳用户的预订,并且与预期的开始日期尽可能接近.
或者换句话说:我需要找到给定项目的第一个预订,之后有足够的空闲时间来预订用户.
这是否可以在普通的SQL中进行,而不必遍历每个预订及其后继者?
当产生解析错误时,例如在控制器内部,ZF2异常处理程序捕获它并且我只看到
An error occurred during execution; please try again later.
No exception available
Run Code Online (Sandbox Code Playgroud)
如果我在内部产生解析错误,public/index.php我可以在浏览器中看到简单的 PHP 错误,因此 PHP 设置是正确的。
如何强制 ZF2 在开发模式下显示此类错误?
我的名为element 的表如下所示:
id | successor | important
----------------------------
1 | NULL | 0
2 | 4 | 1
3 | 5 | 0
4 | 8 | 0
5 | 6 | 1
6 | 7 | 0
7 | NULL | 0
8 | 10 | 1
9 | 10 | 0
10 | NULL | 0
Run Code Online (Sandbox Code Playgroud)
我从一个元素的 ID 开始。每个元素可能有也可能没有后续元素。因此,给定任何元素 ID,我可以从 0..n 个元素构建一个元素链,具体取决于它的后继和后继-后继,依此类推。
假设我的起始 ID 是 2。这会导致以下链:
2 -> 4 -> 8 -> 10
Run Code Online (Sandbox Code Playgroud)
现在我想问这个问题:一个特定的元素链是否至少包含一个重要的== 1的元素?
在伪代码中,无需不必要的检查即可实现这一点的函数可能如下所示: …