Phalcon php命名空间无法使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Phalcon php命名空间无法使用相关的知识,希望对你有一定的参考价值。

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

namespace AppModels;

use PhalconMvcModel;

class Users extends Model
{

和控制器:

use PhalconMvcController;
use AppModelsUsers;

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

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

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

更新:

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

<?php

$loader = new PhalconLoader();

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

$loader->registerNamespaces(
    [
        'AppController' => $config->application->controllersDir,
        'AppModel' => $config->application->modelsDir,
    ]
)->register();

换句话说注册命名空间,我不知道为什么这个文档中没有明确说明但是它接缝这个框架有很多这样的“黑洞”或者我不了解这个框架的基本原理(来自codeigniter和Laravel背景)。

答案

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

// registers namespaces
$loader = new Loader();
$loader->registerNamespaces([
    'AppControllers' => APP_PATH . '/controllers/',
    'AppModels' => APP_PATH . '/models/'
]);
$loader->register();

顺便说一句,APP_PATH可能是你应用程序目录的常量,或者你想要/需要的任何东西。

以上是关于Phalcon php命名空间无法使用的主要内容,如果未能解决你的问题,请参考以下文章

PHP 命名空间与 Phalcon、Vagrant、Apache2 的冲突

VSCODE 片段 PHP 自动填充命名空间

Phalcon php orm无法关联表

无法使用 Xampp 在 Windows 上加载 Phalcon 扩展

phalcon: router规则与解析,已经生成router的链接地址

除了Phalcon php中的indexAction之外,无法调用indexController的动作