require ('dataclass.php');
$db = new DataClass();
$app = new \Slim\Slim();
$app->group('/api/v1', function () use ($app, $db) {
require('processingclass.php');
$foo = new FooClass();
});
以上显然是一个不完整的Slim例子。但是,我如何从$ foo中调用$ db方法?
我有一堆路由,希望能够从各个路由中使用的所有辅助类访问DB类 - 无需在每个辅助类或路由中设置全局或加载/实例化DB类。 / p>
答案 0 :(得分:2)
Slim framework结构上没有100%清除,或者是否有内置方法可以在Slim中处理这样的任务,但最好不要这样传递它吗?
$foo = new FooClass($db);
然后在FooClass()
只是调用在构造函数中设置$db
?像这样的东西?
class FooClass {
private $db = null;
function __construct($db) {
$this->db = $db;
}
}
我的POV再次来自通用PHP类& OOP知识。所以不清楚Slim是否有更好的方法。如果有,欢迎了解更多。
答案 1 :(得分:0)
做到这一点的“正确”方法是在应用容器(index.php)中声明。
您已经有了$app
发起Slim。
使用$container = $app->getContainer();
之后,您只需执行以下操作:
$container['fooclass'] = function($container) {
$fooClass = new FooClass(...)
return $fooClass
}
然后您可以在任何地方使用它
$this->fooclass