我搜索并尝试了所有答案,但都没有成功。
我有一个小的 MVC,在我添加命名空间之前它一直工作得很好。错误无处不在。我认为我当前的错误可能与 Composer 自动加载有关。因为我目前的错误是 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"
}
}
}
Controller .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
{
....
}
这应该涵盖我认为可能存在的问题。如果您想发布更多信息,请告诉我,我会更新我的帖子。
最佳答案
我认为在您的 View
您正在使用的类 Twig_Loader_Filesystem
对?
所以你必须像 \Twig_Loader_Filesystem
一样使用它注意前导反斜杠。
关于找不到php命名空间类 - Twig Composer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38905048/