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
分布式数据库并不是指多个数据库,严格意义来说是指分布式数据库服务器,也称服务器集群。比如MySQL服务器集群,只是由于习惯性的问题,多数程序员都称为分布式数据库。分布式数据库的特点是多台数据库服务器轮流对外提供服务,并提供冗余、容灾等基本功能,确保操作不中断。衡量一个MVC框架能不能进行分布式数据库开发,首先需要看MVC中的连接对象能否智能并顺利地切换数据库服务器。默认情况下,一个连接对象只对一台数据库服务器生效。ThinkPHP提供完善的数据库连接驱动,并且能够同时支持多种类型数据库的分布式开发。默认情况下提供了MySQL分布式数据库开发驱动,如果读者使用的是其他数据库,需要自行到http://www.thinkphp.cn/extend/driver.html网址下载对应的驱动。下面以默认的MySQL驱动为例,详细介绍ThinkPHP连接分布式数据库的过程。
1.配置数据库
ThinkPHP简化了连接分布式数据库的步骤,开发人员不需要手动创建连接对象和释放连接对象,只需要在配置文件中增加数据库配置即可。这里假设在原有的MySQL数据库服务器的基础上再添加一台用于存放BBS论坛数据的MySQL服务器,ip地址为192.168.1.10。配置文件如以下代码所示。
如上述代码所示,新添加的数据库配置项命名为DB_con1,该名称是自定义的,切换数据库时需要使用到。如果需要添加更多集群数据库服务器,只需要按照格式填写即可。配置信息和连接方式根据驱动情况而有所不同,比例使用DNS连接方式,那么就必须按照DNS的方式配置。
这里需要注意的是,新增的数据库配置项名称必须为全小写,否则系统将不能正确识别(以ThinkPHP 3.0为例)。另外,新增加的数据库配置不支持配置数据表前缀。配置完成后,原先的数据库配置会被系统设为默认数据库,并分配编号0;而新增的DB_Con1数据库分配的编号为1,需要开发人员手动切换。(www.chuimin.cn)
2.使用数据库
分布式数据库配置完成后,接下来就可以直接使用了。假设bbs数据库中有一个数据表,并命名为comm_bbs,那么动态切换到该数据表是非常简单的,代码如下所示。
table方法是一个重要的方法,该方法用于指定数据表。前面已经讲述过新增加的数据库配置不支持配置表前缀,所以table方法必须传入带表前缀的数据表名称。但是如果新增加的数据库表前缀本来就和默认数据库的表前缀是一样的,那么table方法是可以省略的。如以下代码所示。
事实上分布式数据库多数都用在主从读写分离上的,这也就意味着所有数据库的表结构都相同,这种情况下就不需要table方法。针对数据库读写分离,ThinkPHP还专门提供了更加便捷的方式。
有关PHP MVC开发实战的文章
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
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
Eclipse是IBM的一个商业项目,2001年11月起IBM将Eclipse贡献给开源社区,从此奠定了Eclipse的地位。Eclipse通过PDT插件来提供PHP开发支持,Eclipse PDT能够让编写PHP变得简单和高效,下面将介绍Eclipse PDT的安装和使用。Eclipse PDT的安装有两种方式,一种是直接通过Eclipse的扩展进行安装;另一种是下载带PDT插件的Eclipse。下面将以Eclipse3.5.2作为基础,讲解Eclipse PDT插件的安装过程。如果下载带PDT插件的Eclipse,只需要双击Eclipse启动程序即可,此时Eclipse就提供了完美的PHP编程支持。......
2023-11-04
图12-2 SOAP服务如果服务没有开启,需要在PHP配置文件中开启,如以下代码所示。其中参数1表示SOA服务描述文件,即WSDL文件,该文件是SOAP通信的核心;参数2表示SOAP协议版本,常用的版本有1.0及1.2,本章内容及示例全部基于SOAP 1.2版本实现。使用普通的Firebug等插件不能获取到异常信息,而断点调试是PHP的弱项,所以调试问题将会是SOAP开发首要面对的问题。......
2023-11-04
下面通过示例代码,演示Cookie函数的实际应用。Cookie能够存放包括中文在内的字符,但长度需要控制在225个字符之内。通过前面的学习,相信读者已经能够掌握Session及Cookie的操作了。虽然Cookie存放于客户端,但是并不意味着Cookie不适合用于会员验证等场景。所以很多网站会使用加密的方式存放Cookie用户名及密码,甚至结合软件与硬件签名实现高度安全的Cookie。总而言之,使用Cookie存放登录数据是可行的,但要做好加密与解密相关操作。......
2023-11-04
Input类库是ThinkPHP提供的一个字符串输入处理扩展,能够方便地对字符串进行安全过滤、转义等,下面将对Input扩展类公开可调用的方法进行介绍。URL协议支持https、ftp等,运行结果为“http://beauty-soft.net”。其中参数string表示需要进行省略处理的字符串;参数length表示省略的字符数。safeHtml通常用于过滤表单输入,防止用户输入HTML代码破坏数据安全性。......
2023-11-04
静态缓存规则是静态缓存生成中最关键的配置。静态缓存规则与URL路由规则有些类似,这两者的核心都是基于正则匹配的。其中index即为控制器动作,表示在URL请求到index动作时,系统将生成index.html静态缓存文件。文件缓存规则共由缓存规则、缓存有效期及附加规则构成。同样,在缓存规则中也是允许这样使用的。......
2023-11-04
相关推荐