我已将Phalcon项目从2迁移到3,并获得了一些意想不到的行为。在我的装载机中,我这样做:
<?php
use Phalcon\Loader;
$loader = new Loader();
$loader->registerDirs(
array(
$config->application->libraryDir,
$config->application->controllersDir,
$config->application->modelsDir
)
);
$loader->register();
现在,当我尝试在我的控制器动作中实例化我的一个模型时,代码停止了:
$present = new \Present();
&#34; recv()的结果失败(104:对等连接重置),同时从上游读取响应标头&#34; /var/log/nginx/error.log中的错误。
但是,当我直接在我的loader.php文件中实例化该类时,模型会自动加载,我可以在任何地方实例化它。控制器操作的解决方法是:
if (class_exists('Present')) { // THIS triggers the autoloader
$present = new \Present();
$present->save();
}
所以问题现在已经解决了。我的问题是:为什么没有
new \Present()
按照我的预期在控制器动作中触发自动加载器?为什么它在Phalcon 2下工作?当我直接在loader.php或public / index.php中执行它时,为什么它可以工作?