最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

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

XAMPP下载 admin 812浏览 0评论

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

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

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

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

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

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

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

这里采用了添加 model.

 

 

  1. <?php
  2. namespace Home\Model;
  3. class UserInfoModel extends \Think\Model {
  4. public $tableName = “UserInfo”;
  5. protected $tablePrefix = ”;
  6. protected $trueTableName = ‘UserInfo’;
  7. public function UserInfoModel() {
  8. }
  9. public function __construct() {
  10. parent::__construct ();
  11. }
  12. }

在 controller 里引用,大致如下

 

 

  1. // 本类由系统自动生成,仅供测试用途
  2. namespace Home\Controller;
  3. use Think\Controller;
  4. use Home\Model\UserInfoModel as User;
  5. class IndexController extends Controller {
  6. public function index() {
  7. $orders = new User ();
  8. $result = $orders->select ();
  9. dump ( $result );
  10. }
  11. }

 

 

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

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 中同样也引入了命名空间的概念,但使用起来会更舒服一些(且版本要求更低一些)。

 

转载请注明:XAMPP中文组官网 » Fatal error: Class ‘Home\Mode\User’ not found in /home/…. thinkphp3.2无法找到数据模型类的问题

您必须 登录 才能发表评论!