自3.2.1开始引入命名空间,一直找不到思路,还好今天代码调通,给入门的TX一些参考。
Controller文件夹下的IndexController.calss.php:
<?php
// 本类由系统自动生成,仅供测试用途
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
}
public function disp(){
echo 'IndexController OK!\n';
}
}
?>
Index.php文件内容:
<?php
require 'D:/Data/Workspace/ThinkPHP/Thinkphp.php';
define('APP_PATH', 'D:/Data/Workspace/TouchIndex/Home/');
define('THINK_PATH', 'D:/Data/Workspace/ThinkPHP/');
define('APP_DEBUG',TRUE); // 开启调试模式
$ts=new Home\Controller\IndexController();
$ts->disp();
?>
以下是我个人的理解:
引用了命名空间Think\Controller,且新定义命名空间Home\Controller。Think与Home平级,两个Controller平级。而Index未使用命名空间(或使用了默认命名空间),层级更高,所以要调用命名空间内的类时必须标明命名空间名称,就如同使用批处理,想调用子文件夹内脚本必须写/subdir1/subdir2/script.bat一样写明路径。
官方自动生成的Index.php不带显式入口,没法知道下一步怎么调用了命名空间中的代码。