Silex ActiveRecord 模型正在加载



我正在尝试将PHP ActiveRecord与Silex一起使用,但是模型自动加载发生了一些奇怪的事情:

// index.php
<?php require_once __DIR__.'/../vendor/autoload.php';
$app = new SilexApplication();
ActiveRecordConfig::initialize(function ($cfg) {
  $cfg->set_model_directory(__DIR__.'/../model');
  // ...
});
$app->get('/', function () {
  $page = AppModelPage::all();
  // return ...;
});
// ../model/Page.php
<?php namespace AppModel;
class Page extends ActiveRecordModel {
}

当我打开一个页面时,它说"找不到类应用程序\模型\页面"。

如果我手动require '../model/Page.php' - 它可以工作。
如果我从../model/Page.php中删除命名空间并像往常一样使用它:

$page = Page::all(); 

它再次起作用。

命名空间有什么问题?

在上面提供的代码中,模型目录是用小写字符编写的,当您使用类时,您使用AppModelPage .将目录从模型更改为模型。您还应检查您的自定义类是否已通过autoload.php脚本正确加载。如果不是这种情况,则必须更新 composer.json 文件。下面是一个简单的示例:

    {
    "require": {
        "silex/silex": "~1.0",
        "silex/web-profiler": "~1.0",
        "monolog/monolog": ">=1.0.0",
        "symfony/monolog-bridge": "~2.3",
        ...
    },
    "autoload": {
        "psr-0": {
            "HERE_GOES_YOUR_CUSTOM_NAMESPACE": "DIRECTORY_OF_NAMESPACE"
        }
    }
}

另外,不要忘记在项目设置版本后更新作曲家!

最新更新