Fatal error: Class 'Home\Mode\User' not found in /home/.... thinkphp3.2无法找到数据模型类的问题

thinkphp3.0时下载过一个thinkphp,只完成了安装,测试页面就没有兴趣玩儿下去了.

后来一直用 YII,现在由于某种特殊的原因,又开始接触 ThinkPhp,官网目前最新版本是3.2.

安装测试版本后,调用数据,发现问题.

直接使用 M函数无法获取模型.

于是看了下文档,因为使用的数据库是以前某个项目的.表的命名没有前缀,表名类似 UserInfo 这样的名称.

似乎不符合 tp 的要求(Yii的话,会更灵活的多,不管你有没有表前缀,不管你表的命名).

但 tp还有一些解决方案可供选择.

这里采用了添加 model.

<?php

namespace Home\Model;

class UserInfoModel extends \Think\Model {
	public $tableName = "UserInfo";
	protected $tablePrefix = '';
	protected $trueTableName = 'UserInfo';
	public function UserInfoModel() {
	}
	public function __construct() {
		parent::__construct ();
	}
}

在 controller 里引用,大致如下

// 本类由系统自动生成,仅供测试用途
namespace Home\Controller;

use Think\Controller;
use Home\Model\UserInfoModel as User;

class IndexController extends Controller {
	public function index() {
		$orders = new User ();
		$result = $orders->select ();
		dump ( $result );
	}
}


出现标题所示问题的原因大致如下:

1.定义的 model 没有放在合适的位置.

2.定义的 model 没有引用命名空间.

3.表的名称不符合 thinkphp 命名规范,而且没有声明关于数据表名称的属性定义.


解决要点:

1.model,通常放在 module->Moel->xxx.class.php(注意 tp的命名规范).

       关于命名空间和自动加载的问题可看下3.2文档《架构》——>《命名空间》一节,另 php官网关于 namespace 传送门

2.在 model 里要先引用tp 的 model 类,或者如上所示代码中直接 extends.

      

3.看下文档《基础》——>《开发规范》和《模型》——>《模型定义》一节



ps1: tp3.2的文档中提出装要求安装环境必须 PHP5.3及以后版本并且 dev,及 PHP6可以,与命名空间及 autoload 等魔述方法不无关系.

ps2:顺便喷一下 tp 的命名空间,YII 中同样也引入了命名空间的概念,但使用起来会更舒服一些(且版本要求更低一些)。


你可能感兴趣的:(Fatal error: Class 'Home\Mode\User' not found in /home/.... thinkphp3.2无法找到数据模型类的问题)