Phalcon php命名空间无法使用

时间:2017-12-24 16:49:03

标签: php namespaces phalcon

所以我有用户模型命名空间:

namespace App\Models;

use Phalcon\Mvc\Model;

class Users extends Model
{

和控制器:

use \Phalcon\Mvc\Controller;
use \App\Models\Users;

class LoginController extends Controller
{
  ...
  public function postLoginAction() {
    $user = Users::findFirst([ ...
  }
  ...

始终收到错误致命错误:未捕获错误:类' App \ Models \ Users'没有找到无论如何,尝试每一个变化都不知道它有什么问题。甚至我的IDEA正确地解决了这个问题。

如果删除我的命名空间,一切正常。

更新

因此,如果您使用phalcon dev工具生成项目,然后开始生成其他内容(模型,控制器),您将需要为模型提供命名空间,它将无法工作,您还需要更新app / config / loader.php像这样:

<?php

$loader = new \Phalcon\Loader();

/**
 * We're a registering a set of directories taken from the configuration file
 */
$loader->registerDirs(
    [
        $config->application->controllersDir,
        $config->application->modelsDir
    ]
)->register();

$loader->registerNamespaces(
    [
        'App\Controller' => $config->application->controllersDir,
        'App\Model' => $config->application->modelsDir,
    ]
)->register();

换句话说,注册名称空间,我不知道为什么在文档中没有明确说明,但它接缝这个框架有很多这样的&#34;黑洞&#34;或者我不了解这个框架基础(来自codeigniter和Laravel背景)。

1 个答案:

答案 0 :(得分:1)

在你的bootstrap文件中试试这个:

// registers namespaces
$loader = new Loader();
$loader->registerNamespaces([
    'App\Controllers' => APP_PATH . '/controllers/',
    'App\Models' => APP_PATH . '/models/'
]);
$loader->register();

顺便说一下,APP_PATH可以是您应用目录的常量,也可以是您想要/需要的任何内容。