ThinkPHP开发笔记

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:[email protected]/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:[email protected]:3306/thinkphp‘,

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

new \Home\Model\NewModel(‘new‘,‘think_‘,‘DB_CONFIG1‘);
new \Home\Model\BlogModel(‘blog‘,‘think_‘,‘DB_CONFIG2‘);
时间: 2024-08-07 17:01:53

ThinkPHP开发笔记的相关文章

ThinkPHP开发笔记-视图

1.如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值,而且assign方法必须在display和show方法之前调用. $array['name'] = 'thinkphp'; $array['email'] = '[email protected]'; $array['phone'] = '12335678'; $this->assign($array); $this->display(); 然后,

ThinkPHP开发笔记-控制器

1.下面就是一个典型的控制器类的定义: <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello(){ echo 'hello,thinkphp!'; } } ?> 当访问 http://serverName/index.php/Home/Index/hello 后会输出: hello,thinkphp! 2.Ac

ThinkPHP开发笔记-用户登录注册

1.修改模块配置,Application/当前模块名/Conf/config.php <?php return array( //数据库配置信息 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 服务器地址 'DB_NAME' => 'thinkphp', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' =>

ThinkPHP开发笔记-前后端数据交互

此处就是 Controller 和 View 相互传数据. 1.Controller 向 View 的页面传数据.在控制器中把变量传递给模板,使用 assign 方法对模板变量赋值.例如: 在Controller中: $array['name'] = 'thinkphp'; $array['email'] = '[email protected]'; $array['phone'] = '12335678'; $this->assign($array); 在View文件中输出: <?php e

thinkphp学习笔记1—目录结构和命名规则

最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快点,别无他意,所谓活到老,学到老,希望各位不要见笑啊. 我的做法很简单,先从手册开始,手册是开发thinkphp作者辛勤劳动的成果,但是有些地方是在是不懂,如果有幸各位也遇到类似的问题希望能回复.thinkphp手册地址:http://doc.thinkphp.cn/manual.html 1.框架目录 在章节1.6 目录结构,内容如下: 新版的目录结

thinkphp学习笔记4—眼花缭乱的配置

1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展配置>动态配置,所以后面的配置权限要大于前面的,因为后面的配置会覆盖前面同名配置,同事会生辰配置缓存文件无需重复解析,减小开销. 惯例配置:在惯例配置内对大多数常用参数进行默认配置,因为惯例配置最先加载,优先级别最低,如果不需要做特殊配置的话,完全可以保持默认值,惯例配置位于ThinkPHP/Conf/convention.php,内容摘抄如下: &l

thinkphp学习笔记7—多层MVC

原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层等不同的模型层可以在模块目录下创建Model,Logic,Service目录,把对用户表的所有模型操作分成3层. 1.Model/UserModel用于定义数据相关的自动验证,自动完成和数据存取接口 2.Logic/UserLogical用于定义用户相关的业务逻辑 3.Service/UserSer

thinkphp开发技巧经验分享

thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同时还有一些开发中碰到的问题的解决方案下面我们一起来看看吧. 一,常用的系统变量 (1)系统变量:在模板中输出系统变量:包括server.env.session.post.get.request.cookie {$Think.server.script_name} // 输出$_SERVER变量 {$

张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231

原文:张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231 GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置