PHP中的Propel和Composer:没有连接

Sim*_*Sca 5 php configuration propel autoload composer-php

我在php项目中使用Composer配置Propel时遇到问题.

这是我的树目录出现的方式:

project/
    |--/public_html/index.php
    |--/app/
    |    |--data/
    |    |     |--propel.json
    |    |     |--schema.xml
    |    |--vendor/
    |    |--composer.json
Run Code Online (Sandbox Code Playgroud)

在/ data /文件夹中,我将存储我的所有推进文件,即generated-classes /,generated-conf /和generated-sql /.

为了实现这个目的,使用/ data /文件夹中的终端,我按以下顺序放置命令:

$ propel sql:build
$ propel model:build
$ propel config:convert
Run Code Online (Sandbox Code Playgroud)

一切顺利.

为了做更合适的工作,在composer.json中我添加了这个额外的功能:

"autoload": {
    "classmap": ["./data/generated-classes/"]
}
Run Code Online (Sandbox Code Playgroud)

所以,几乎在理论上,推杆

require '../app/vendor/autoload.php';
Run Code Online (Sandbox Code Playgroud)

里面的index.php应该足够了.不幸的是,当我尝试在此页面中使用一个推进类时,返回错误

键入:Propel\Runtime\Exception\RuntimeException

消息:没有为数据库"my_api"定义连接.你忘了定义一个连接还是写错了?

文件:'C:\ pathToMyProject'\ project\app\vendor\propel\propel\src\Propel\Runtime\ServiceContainer\StandardServiceContainer.php

行:279

我认为propel没有找到存储在/ data /文件夹中的propel.json文件.

作为额外的,如果在index.php中,我只需添加

require_once  '../app/data/generated-conf/config.php';
Run Code Online (Sandbox Code Playgroud)

一切顺利.

有没有使用这最后一个require_once自动加载推进的技巧?(显然保持原样).

谢谢阅读.

Jen*_*och 5

  • CLI命令的顺序很重要:

    • composer installupdate获取推进
    • 然后使用propel生成模型的命令
    • 然后重新扫描/重新生成自动加载文件 composer dump-autoload --optimize
  • 您可以在应用程序的引导过程中包括配置文件-就像您已经拥有的一样。

  • 或者,您可以使用filesComposers autoload部分中的指令来定义文件,该文件应包含在每个请求中。

    引用:https : //getcomposer.org/doc/04-schema.md#files

    "autoload": {
        "files": ["./data/generated-conf/config.php"],
        "classmap": ["./data/generated-classes/"]
    }
    
    Run Code Online (Sandbox Code Playgroud)