可以在非PhalconPHP项目中使用PHQL吗?

时间:2015-04-23 23:43:42

标签: php phalcon

所以这是我的问题。我有一个超过700K PHP行的遗留项目。自制框架。

我们的ORM有效,但我想在项目中尝试PhalconPHP。

我们正在使用Pimple作为DI。

是否可以在非Phalcon项目中仅运行Model / PHQL?

若然,怎么样?

由于

1 个答案:

答案 0 :(得分:1)

是的,有可能。感谢PhalconPHP forum中的@calin,我找到了答案。基本上步骤如下:

  1. 创建Phalcon DI的实例(或任何扩展DI接口的实例)
  2. 设置modelsManager
  3. 设置modelsMetadata
  4. 设置db
  5. 设置默认DI
  6. 在模型中,根据需要定义getSource。
  7. 示例:

    <?php
    
    $di = new \Phalcon\DI();
    $di->set('modelsManager', function () {
        return new \Phalcon\Mvc\Model\Manager();
    });
    $di->set('modelsMetadata', function () {
        return new \Phalcon\Mvc\Model\MetaData\Memory();
    });
    $di->set('db', function () {
        return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
            'adapter' => 'Mysql',
            'host' => 'xxx.dev',
            'username' => 'xxxx',
            'password' => 'yyy',
            'dbname' => 'zzz',
        ));
    });
    
    \Phalcon\DI::setDefault($di);
    

    在您需要调用Models / PHQL之前,必须在某些部分调用它。

    定义普通模型,并调用模型。它非常史诗。

    模型示例:

    <?php
    
    namespace Vendor\App\Mvc\Model;
    
    use \Phalcon\Mvc\Model;
    
    class UserModel extends Model
    {
    
        public function getSource()
        {
            return "users";
        }
    }
    

    在代码的某些部分,在调用Phalcon DI之后:

    <?php
    
     echo \Vendor\App\Mvc\Model\UserModel::find()->count();