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

Is possible to use PHQL in a non PhalconPHP project?

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

我们的 ORM 可以工作,但我想在项目中尝试 PhalconPHP。

我们正在使用 Pimple 作为 DI。

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

如果是,怎么做?

谢谢

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

  1. 创建 Phalcon DI 的实例(或任何扩展 DI 接口的实例)
  2. 设置模型管理器
  3. 设置模型元数据
  4. 设置分贝
  5. 设置默认DI
  6. 在模型中,根据需要定义 getSource。

示例:

<?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();