一.实例化基础模型(Model) 类
1.建立一个数据库MYAPP,建立一张表think_user
SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2012 年 09 月 04 日 05:22
-- 服务器版本: 5.5.8
-- PHP 版本: 5.2.6SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;--
-- 数据库: `myapp`
---- --------------------------------------------------------
--
-- 表的结构 `think_user`
--CREATE TABLE IF NOT EXISTS `think_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` char(15) NOT NULL,
`password` char(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;--
-- 转存表中的数据 `think_user`
--INSERT INTO `think_user` (`id`, `username`, `password`) VALUES
(1, 'a', '594f803b380a41396ed63dca39503542'),
(2, 'b', '65ba841e01d6db7733e90a5b7f9e6f80');
2. 建立一个action\UserAction.class.php文件(注意大小写)
<?php
class UserAction extends Action{
public function index(){
//第一种方法,实例化模型
$User=new Model('user');
$list=$User->select();
dump($list);
}
public function aa(){
echo '调用UserAction.class.class.php类成功';
}}
?>
3.浏览器输入:http://localhost/lw/thinkphplnkq/index.php/user/index(注user模块名 index是该类的方法)
执行完毕后应该是这样
这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。
缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的CURD操作。
2、实例化其他公共模型类
1. 建立一个action\UserAction.class.php文件(注意大小写)
class UserAction extends Action{
public function index(){
//第二种方法
$user = new CommonModel('user','think_');
$list=$user->select();
dump($list);
}2.结果
http://localhost/lw/thinkphplnkq/index.php/user/index(注user模块名 index是该类的方法)
同上
3、实例化用户自定义模型(×××Model)类
1. 定义的模型类通常都是放到项目的Lib\Model目录下面。例如
Lib\Model\UserModel.class.php
如果没有建立出现:Fatal error: Class 'UserModel' not found in
2. 建立一个action\UserAction.class.php文件(注意大小写)
class UserAction extends Action{
public function index(){
//第三种方法
$user = $user=new UserModel('user');;
$list=$user->select();
dump($list);
}
3.结果
http://localhost/lw/thinkphplnkq/index.php/user/index(注user模块名 index是该类的方法)
同上
补充:$user=D(‘user’);
D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化
Model基类,同时对于已实例化过的模型,不会重复去实例化。D方法还可以支持跨项目和分组调用,需要使用。
这种情况是使用的最多的,一个项目不可避免的需要定义自身的业务逻辑实现,就需要针对每个数据表定义一个模型类
,例如UserModel 、InfoModel等等。
4.实例化空模型类
1. 建立一个action\UserAction.class.php文件(注意大小写)
class UserAction extends Action{
public function index(){
//第四种方法$Model=M();
dump($Model->query('select * from think_user '));}
2.结果
http://localhost/lw/thinkphplnkq/index.php/user/index(注user模块名 index是该类的方法)
同上
空模型类也支持跨项目调用。
我们在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法。