ThinkPHP经过了六年的发展,当前最新版本为3.0。最新版本提供了NoSQL、云技术、分布式支持,使得ThinkPHP的功能更加完善,能够满足大型Web应用的开发需求。ThinkPHP定位于轻量级,快速和简单是该框架的主要特点,这在本书后面的章节内容中将会明显地感受到。接下来首先对ThinkPHP处理MVC的流程作一个简单的介绍,加深对ThinkPHP的直观认识。......
2023-11-04
为了便于学习和测试,读者可以根据4.3.3节内容将tp目录绑定为一个虚拟网站,这里绑定的域名为http://tp.localhost,本书后面的章节内容如无另外说明均在该虚拟网站中完成。接下来将使用ThinkPHP创建一个简单的MVC网站应用。
1.创建数据库
为了便于测试ThinkPHP完整的MVC处理流程,首先创建一个数据库和一个数据表,分别命名为tp(数据库)和tpk_user(数据表),tpk_user数据表SQL代码如下。
然后向tpk_user表中插入两条测试数据,SQL代码如下所示。
2.修改配置文件
ThinkPHP默认的数据库驱动即为MySQL,所以无须做任何修改即可连接到MySQL数据库。打开项目的配置文件home/Conf/config.php,增加MySQL数据库连接信息,如以下代码所示。
通过正确修改上述配置文件信息,现在ThinkPHP就可以操作MySQL数据库了。需要注意的是,由于ThinkPHP默认会使用预编译机制(即在home/Runtime目录里生成~runtime.php文件),所以每次修改完配置文件后均需要删除~runtime.php文件(可以直接清空home/Runtime目录),新的配置数据才会生效。
3.创建模型
根据MVC的设计思想,模型(Model)是用于影射数据表的,所有CURD应该都在Model中完成。但ThinkPHP有些不同,ThinkPHP允许开发人员直接在控制器中完成这些操作,不必拘泥于在自定义的Model中完成(当然也支持在自定义Model中完成)。接下来将创建一个User模型,并在该模型中实现数据查询操作。
(www.chuimin.cn)
在ThinkPHP中无论是模型的文件名,还是模型的类名都必须遵循内建的文件规则。如UserModel.class.php文件,User代表模型名称,Model为模型文件的标识,.class.php为ThinkPHP框架所规范的文件后缀名;UserModel为类名称,所有用户自定义模型都必须继承于Model或者AdvModel基础模型类。
4.创建控制器
在ThinkPHP中,控制器的命名规则和模型相同,控制器的文件标识为Action。接下来将在home/Lib/Action目录中创建一个Member控制器,文件名为MemberAction.class.php,代码如下。
如上述代码所示,在index动作中调用了前面创建的User自定义模型,该模型中有一个get_user()方法,该方法将获取tpk_user表中的用户数据。$this->assign("data",$rows)指定了将数据输出到视图模板,接下来需要创建对应的视图模板。
5.创建视图模板
进入home/Tpl目录,在该目录中创建一个分类Member,一个控制器对应一个模板分类,然后进入Member目录,在该目录中为index动作创建视图模板,并命名index.html(ThinkPHP项目模板默认使用.html作为视图模板),代码如下所示。
如以上代码所示,由于在index动作中分配给视图模板的数据为数组,所以需要使用循环语句遍历变量数据。在ThinkPHP3.0中,可以使用<volist>或<foreach>标签遍历数组变量,使用方式类似于Smarty中的foreach标签。同时也支持直接使用标准的PHP代码。
由于volist提供了非常灵活的特性,并且很好地将界面与逻辑进行分离,所以应该尽量避免在视图代码中嵌入PHP代码。关于ThinkPHP的视图设计,在第6章6.4节中会详细介绍,在此读者只需要了解其作用即可。最终运行结果如图4-24所示。
图4-24 ThinkPHP MVC运行效果
说明:在ThinkPHP 3.0以前的版本中,视图还有主题的概念,所谓的主题是为了使网站更好地应用多模板、多风格。比如一个网站也许会有红色风格和黑色风格,但必须要有一个默认风格,所以ThinkPHP 2.x在创建应用时会在Tpl目录中创建一个default目录,该目录即为默认的模板风格。以本节内容为例,Member模板分类应该处于default风格下,所以index.html的路径应该为home/Tpl/default/Member/index.html。在ThinkPHP 3.0中并不是没有主题的概念,只是默认的主题为空,如果确实需要多主题,DEFAULT_THEME配置参数可以指定当前应用的主题目录。
有关PHP MVC开发实战的文章
ThinkPHP经过了六年的发展,当前最新版本为3.0。最新版本提供了NoSQL、云技术、分布式支持,使得ThinkPHP的功能更加完善,能够满足大型Web应用的开发需求。ThinkPHP定位于轻量级,快速和简单是该框架的主要特点,这在本书后面的章节内容中将会明显地感受到。接下来首先对ThinkPHP处理MVC的流程作一个简单的介绍,加深对ThinkPHP的直观认识。......
2023-11-04
和其他PHP MV框架一样,要使用ThinkPHP必须首先要安装和部署框架文件。ThinkPHP支持多种数据库驱动,包括PDO套件,接下来将通过ThinkPHP实现一个简单的MVC应用。这里将下载的版本为ThinkPHP 3.0,解压后ThinkPHP目录结构如图4-22所示。图4-23 ThinkPHP成功初始化项目......
2023-11-04
在这一过程中,开发人员需要对URL请求进行处理,例如安全检测、URL映射等,只能在运算进行前使用特定的文件进行拦截或处理。ThinkPHP的行为机制本质上是一种URL拦截处理机制,行为的引入把过去没有生命周期概念的PHP应用添加了生命周期的概念。图11-8 ThinkPHP行为执行过程内置行为是确保系统能够运行的基础,一般情况下开发人员不需要扩展内置的行为。如图11-8所示,项目首先执行的行为标签是app_init,一直到app_end标签,中间的标签有些有对应的行为,有些没有。......
2023-11-04
接下将继续以ThinkPHP 3.0为例,详细介绍在MVC的中SOAP服务端开发,步骤如下。然后在home项目中创建api控制器,该控制器用于SOAP服务绑定,首先创建article.wsdl服务绑定,如以下代码所示。图12-15 WSDL绑定出错接下来需要在article.wsdl文件中创建相应的操作及服务绑定。并且建立http://tp.localhost/index.php/api/Article服务绑定地址。至此,一个article.wsdl SOAP服务就创建完成了,接下来就可以使用专业的SOAP测试工具或者在PHP中直接调用该服务。......
2023-11-04
CodeIgniter简称CI,是国内使用最广泛的PHP MVC框架之一。CodeIgniter从MVC入口文件到框架核心代码,均经过严谨的设计。CodeIgniter定位于小型的网站应用开发,但并不代表CodeIgniter不适用于大型网站开发。CodeIgniter MVC处理流程如图4-19所示。CodeIgniter灵活高效的MVC处理机制,无论在国内还是国外都得到了广泛的PHP程序员支持。接下来将以CodeIgniter 2.1.2为基础,介绍CodeIgniter的MVC处理流程,让读者对CodeIgniter有一个更加直观的认识。......
2023-11-04
对于普通的开发者而言,最需要关注Lib目录及Extend目录,接下来分别进行介绍。由于ThinkPHP遵循Apache 2.0协议,意味着PHP开发人员可以通过修改ThinkPHP源代码,以便更适合自己的开发需求,这就要求开发人员必须要对Extend目录下的扩展类库要有深入的认识。......
2023-11-04
事实上,ThinkPHP已经完美地解决了读写分离功能,本节将会详细介绍。本例中主数据库的ip地址为192.168.2.1;从数据库的ip地址为192.168.2.2,读者可以使用虚拟机来模拟上述环境。配置完成后,保存配置文件,重启MySQL数据库。接下来将结合ThinkPHP实现数据的读写分离。ThinkPHP提供了完善的读写分离功能,开发人员不需要手动切换数据库。......
2023-11-04
PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
相关推荐