从实例化在 slim 内部实例化的类访问类

  • 本文关键字:实例化 访问 slim 内部 php oop slim
  • 更新时间 :
  • 英文 :

require ('dataclass.php');
$db = new DataClass();
$app = new SlimSlim();
$app->group('/api/v1', function () use ($app, $db) {
  require('processingclass.php');
  $foo = new FooClass();
});

上面显然是一个不完整的 Slim 示例。但是,我将如何从$foo内部调用$db方法?

我有一堆路由,并希望从各个路由中使用的所有二级类访问数据库类 - 无需设置全局或在每个二级类或路由中加载/实例化数据库类。

不是 100% 清楚 Slim 框架结构,或者是否有内置的方法来处理 Slim 中的此类任务,但最好以这种方式传递它吗?

$foo = new FooClass($db);

然后在FooClass()中调用在构造函数中设置$db?像这样的东西?

class FooClass {
  private $db = null;
  function __construct($db) {
    $this->db = $db;
  }
}

同样,我的POV来自通用PHP类和OOP知识。所以不清楚斯利姆是否有更好的方法。如果有,欢迎了解更多。

执行此操作的"正确"方法是在应用程序容器(index.php)中声明。你已经得到了启动Slim $app。使用 $container = $app->getContainer(); 获取容器

在此之后,您只需执行以下操作:

$container['fooclass'] = function($container) {
    $fooClass = new FooClass(...)
    return $fooClass
}

然后你可以在任何地方使用它

$this->fooclass

相关内容

最新更新