【发布时间】:2016-03-22 21:37:38
【问题描述】:
我正在尝试在“wamp-server”上使用 php 来练习 MVC 概念
在本地目录中,我有 index.php 页面,用于使用 alto-router 包和 routes.php 文件进行基本路由:
<?php
$router->map('GET','/test', 'Acme\Controllers\PageController@test' ,'test');
composer.json 文件是:
{
"name": "eren/eren",
"authors": [
{
"name": "Eren Ardahan",
"email": "???@???.com"
}
],
"require": {
"filp/whoops": "^1.1",
"altorouter/altorouter": "1.1.0"
},
"autoload":{
"psr-4":{"Acme\\":"src/"}
}
}
PageController.php 是
<?php namespace Acme\Controllers;
use Acme\Testing\Test;
class PageController
{
public function test(){
include(__DIR__ . "/../../views/test.php");
//---Deleted lines
$test = new Test;
$test -> test();
/---
}
}
acme目录下的Test.php为:
<?php namespace Acme\Testing;
class Test{
public function test(){
echo "Working";
}
}
上面是视图目录中的test.php。当我删除PageController.php中注释的两行时它可以工作
<?php
echo "TEST PAGE <br>";
但是这行有一个错误:
找不到类“Acme\Testing\Test”..
【问题讨论】:
-
这是 Windows/WAMP,因此可能不是区分大小写的问题(尽管需要注意区分大小写),但如果将这些目录从
acme,controllers重命名为 @987654330,结果相同@?另见stackoverflow.com/questions/24495987/… -
您的命名空间错误。它应该是 \Acme\acme 因为您的测试类不在地图测试中
-
@Micheal Michael Berkowski 我更改了目录名称,然后 composer var dump-autoload.. 但是仍然没有找到类.. routes.php 文件中有趣的东西我使用命名空间并且它有效
-
@Szenis 是对的..在我将 acme 目录名称更改为测试后它工作了..谢谢..
标签: php composer-php psr-4