lwcompany

功到自然成

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

一.实例化基础模型(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.6

SET 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是该类的方法)

  执行完毕后应该是这样

I9J9RQ9{1M5][35BB5A{A`3

这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。

缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的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方法。

posted on 2012-09-05 09:16  平渡飞扬  阅读(581)  评论(0编辑  收藏  举报