thinkphp学习之路(三)

1.实例化基础模型(Model)类
在没有定义任何模型的时候,可以使用下面的方法实例化一个模型类
来进行操作
$User = new Model('User');
$User->select();   // 进行其他的数据操作
或者使用M快捷方法进行实例化,其效果是相同的。
$User = M('User');
$User->select();            // 进行其他的数据操作

2.实例化其他模型类
    第一种方式实例化因为没有模型类的定义,因此很难封装一些额外的逻辑方
法,不过大多数情况下,也许只是需要扩展一些通用的逻辑,那么就可以尝试下
面一种方法。
M方法默认是实例化Model类,如果需要实例化其他模型类,可以使用:
$User = M('User', 'CommonModel');
上面的方法等效于:
$User = new CommonModel('User');
    因为系统的模型类都能够自动加载,因此不需要在实例化之前手动进行类库
导入操作。模型类commonModel必须继承Model,如果没有定义别名导入的话
,需要放在项目Model下。我们可以在CommonModel类里面定义一些通用的
逻辑方法,就可以省去为每个数据表定义具体的模型类,如果项目的数据表超过
100个,而且大多数都是执行基本的CURD操作,只是个别模型有一些复杂的业
务逻辑需要封装,那么第一种方式和第二种方式的结合是一个不错的选择。

3.实例化用户定义的模型(×××Model)类
概述:这种情况是使用的最多的,一个项目不可避免的需要定义自身的业务逻辑
实现,就需要针对每个数据表定义一个模型类,例如UserModel、InfoModel等
等。
存放位置:定义的模型类通常都是放到项目的Lib\Model目录下面。例如:
class UserModel extends Model{
  Public function myfun(){
       // 添加自己的业务逻辑
       // ………
  }
}
延伸:模型类还可以继承一个用户自定义的公共模型类,而不是只能继承Model类

实例化自定义模型类的方式:
第一种:
$User = new UserModel();
$User->select();         // 进行其他的数据操作
第二种:使用D快捷方式进行实例化
$User = D('User');
$User->select();       // 进行其他的数据操作
关于使用D快捷方式进行实例化的说明:
     D方法可以自动检测模型类,不存在时系统会抛出异常,同时对于已实例化
过的模型,不会重复去实例化。
     默认的D方法只能支持调用当前项目的模型,如果需要跨项目调用
,需要使用:
$User = D('User', 'Admin'); // 实例化Admin项目下面的User模型
$User->select();
如果启用模块分组功能,还可以使用:
$User = D('Admin.User');
4.实例化空模型类
    如果仅仅是使用原生SQL查询的话,不需要使用额外的模型类,实例化一个
空模型类即可进行操作,例如:
$Model = new Model();
// 或者使用M快捷方法实例化是等效的
// $Model = M();
$Model->query('SELECT * FROM think_user where status=1');
空模型类也支持跨项目调用。

ThinkPHP利用PHP 5的魔术方法机制来实现属性的直接访问。这也是
最常用的访问方式,通过数据对象访问,例如:
<?php
$User = new Model('User');
$User->find(1);
echo $User->name;    // 获取name属性的值
$User->name = 'ThinkPHP';  // 设置name属性的值
?>
还有一种属性的操作方式是通过返回数组的方式,例如:
<?php
$Type = D('Type'); // 注意这里返回的type数据是一个数组
$type = $Type->find(1);
echo $type['name'];   // 获取type属性的值
$type['name'] = 'ThinkPHP';  // 设置type属性的值
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值