[英]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.