【问题标题】:php namespace class not found - twig composer找不到 php 命名空间类 - 树枝作曲家
【发布时间】:2016-12-18 16:55:53
【问题描述】:

我搜索并尝试了所有答案,但没有成功。

我有一个小型 MVC,在我添加命名空间之前它工作得很好。到处都是错误。我认为我当前的错误可能与作曲家自动加载有关。因为我目前的错误是 Twig。 我应该注意的是,当我删除所有命名空间时效果很好。

我的最后一个错误与此错误相同,但与 View 类相同。我通过将 View.php 放入 Viewer 文件夹而不是 Core 或 Controller 文件夹来解决它

错误

    Fatal error: Uncaught Error: Class 'app\Core\Viewer\Twig_Loader_Filesystem' not found in G:\site\app\Core\Viewer\View.php:40 Stack trace: #0 G:\site\app\Core\Controller\Controller.php(13): app\Core\Viewer\View->__construct('index.twig', Array) #1 G:\site\app\controllers\mycms.php(14): app\Core\Controller\Controller::view('index.twig', Array) #2 [internal function]: myCMS::index() #3 G:\site\app\Core\App.php(68): call_user_func_array(Array, Array) #4 G:\site\public\index.php(13): Core\App->__construct() #5 {main} thrown in G:\site\app\Core\Viewer\View.php on line 40

文件结构 - 不完整结构仅影响文件

| common.php - Includes all dependency's
| composer.json
| 
├────app
|    |     bootstrap.php - simply includes everything in app
|    |
|    ├───Core
|        |     App.php - uses namespace app\Core
|        |               Class name App
|        |
|        ├───Controller
|        |          Controller.php - uses namespace app\Core\Controller
|        |                           Class name Controller
|        ├───Viewer
|        |         Viewer.php - uses namespace app\Core\Viewer
|        |                      Class name View
|
├───public
|   |      index.php - includes common.php which includes everything else
|
├───vendor - typical composer structure
|   |    autoload.php
    ├───twig

composer.json - 我觉得这就是问题所在。我已经使用了“composer dumpautoload”

{
    "require": {
        "twig/twig": "~1.0",
        other dependency's...
    },
    "autoload": {
        "psr-4": {
            "app\\Core\\": "app/Core"
        }
    }
}

控制器.php

namespace app\Core\Controller;

use app\Core\Viewer as View;

class Controller {

    public static function view($viewName, $data)
    {
        $view = new View($viewName, $data);

        ...
    }
}

查看.php

namespace app\Core\Viewer;

class View
{
    ....
}

这应该涵盖了我认为可能存在的问题。如果您想发布更多内容,请告诉我,我会更新我的帖子。

【问题讨论】:

    标签: php class namespaces twig composer-php


    【解决方案1】:

    我认为在您的View 课程中您使用的是Twig_Loader_Filesystem 对吗?

    所以你必须像 \Twig_Loader_Filesystem 一样使用它,注意前面的反斜杠。

    【讨论】:

    • 就是这样!命名空间有很多。很多要更新。非常感谢!
    • 命名空间总是从你当前所在的那个相对开始,因此你得到了Class 'app\Core\Viewer\Twig_Loader_Filesystem' not found的错误。自动加载器期望该类位于命名空间 app/Core/Viewer 中,这是不正确的
    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多