ThinkPHP开发笔记-模型

来源:互联网 发布:ios动画制作软件 编辑:程序博客网 时间:2024/05/24 07:11
1、模型定义。在ThinkPHP中,可以无需进行任何模型定义。只有在需要封装单独的业务逻辑的时候,模型类才是必须被定义的,因此ThinkPHP在模型上有很多的灵活和方便性,让你无需因为表太多而烦恼。

模型类通常需要继承系统的\Think\Model类或其子类,下面是一个Home\Model\UserModel类的定义:

namespace Home\Model;use Think\Model;class CategoryModel extends Model {    protected $trueTableName = 'top_categories';     protected $dbName = 'top';}

2、模型实例化。根据不同的模型定义,我们有几种实例化模型的方法,根据需要采用不同的方式:

(1)直接实例化。可以和实例化其他类库一样实例化模型类,模型类通常都是继承系统的\Think\Model类,例如:

$User = new \Home\Model\UserModel();// 带参数实例化$New  = new \Home\Model\NewModel('blog','think_',$connection);

(2)D方法实例化。D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的\Think\Model基类,同时对于已实例化过的模型,不会重复去实例化。

$User = D('User');

(3)M方法实例化。D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。

$User = M('User');

(4)实例化空模型类。

//实例化空模型$Model = new Model();//或者使用M快捷方法是等效的$Model = M();//进行原生的SQL查询$Model->query('SELECT * FROM think_user WHERE status = 1');

3、数据库连接信息。系统默认会读取配置文件中的相关参数,包括:

'DB_TYPE'      =>  '',     // 数据库类型'DB_HOST'      =>  '',     // 服务器地址'DB_NAME'      =>  '',     // 数据库名'DB_USER'      =>  '',     // 用户名'DB_PWD'       =>  '',     // 密码'DB_PORT'      =>  '',     // 端口'DB_PREFIX'    =>  '',     // 数据库表前缀'DB_DSN'       =>  '',     // 数据库连接DSN 用于PDO方式'DB_CHARSET'   =>  'utf8', // 数据库的编码 默认为utf8

上面实例化方法中直接实例化和M方法实例化,都可以传入数据库连接信息。数据库连接信息参数支持三种格式:

(1)字符串定义

new \Home\Model\NewModel('blog','think_','mysql://root:1234@localhost/demo');

(2)数组定义

$connection = array(    'db_type'    =>   'mysql',    'db_host'    =>   '127.0.0.1',    'db_user'    =>   'root',    'db_pwd'     =>   '12345',    'db_port'    =>    3306,    'db_name'    =>    'demo', );new \Home\Model\NewModel('new','think_',$connection);

(3)配置定义

//数据库配置1'DB_CONFIG1' => array(     'db_type'  => 'mysql',     'db_user'  => 'root',     'db_pwd'   => '1234',     'db_host'  => 'localhost',     'db_port'  => '3306',     'db_name'  => 'thinkphp'),//数据库配置2'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp',

然后,我们就可以这样实例化模型类传入连接信息:

new \Home\Model\NewModel('new','think_','DB_CONFIG1');new \Home\Model\BlogModel('blog','think_','DB_CONFIG2');

 

0 0
原创粉丝点击