访问类实例化的外部苗条从类实例化苗条?

时间:2013-12-23 03:25:30

标签: php oop slim

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>

2 个答案:

答案 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