繁体   English   中英

将Doctrine ODM与FlightPHP结合使用

[英]Using Doctrine ODM with FlightPHP

我正在尝试将Doctrine的MongoDB ODM与FlightPHP一起使用,我认为这将是一个非常快捷的小项目。

我已经用Flight注册了DocumentManager类,如下所示:

$dm = DocumentManager::create( $connection, $config );

Flight::register('dm', 'Doctrine\ODM\MongoDB\DocumentManager', array($connection,     $config));

// Endpoints
Flight::route( '/api/create', function ( )
{
    $thing = new Thing();

    $dm = Flight::dm();
    $dm->persist( $thing );
    $dm->flush();
} );

看来航班试图调用受保护的Doctrine的构造函数? 我有什么解决方案?

Fatal error: Call to protected Doctrine\ODM\MongoDB\DocumentManager::__construct() from context 'flight\core\Loader' in /../vendor/mikecao/flight/flight/core/Loader.php on line 116

最新版本的Flight中已解决此问题

现在应该可以在最新的提交b9b2d0f中使用了。 您可以注册一个可调用对象,而不只是一个类名:

Flight::register('db', array('Doctrine\ORM\EntityManager','create'), array($connection, $config));

增加了注册回调以进行类实例化的功能。 https://github.com/mikecao/flight/commit/b9b2d0fa2d75e6b2f606fbd0d9a8059a0f741578 https://github.com/mikecao/flight/issues/105

DocumentManager类旨在通过其create()静态工厂方法构造,如《 入门简介》文档条目中所示。

看一下Flight的Registering Classes ,它似乎仅支持通过调用其构造函数来构造类。 这与诸如Silex之类的框架形成对比,后者使您可以完全控制构建共享服务(请参阅此处 )。 照原样,我没有在Flight的当前代码中看到任何变通办法,所以我建议打开一个问题或向项目提交请求请求,以请求/添加更灵活的服务构造。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM