ThinkPHP的模板引擎高效之处在于灵活的视图标签,熟悉这些标签的使用方式将能够提高视图模板的设计水平。接下来将从基本的创建视图开始,然后深入介绍默认视图引擎的使用。创建一个视图可分为以下几个步骤。需要注意的是,使用默认的{$}边界符,在视图模板中使用JavaScript等脚本时,有可能造成冲突。ThinkPHP内置了多种视图引擎,在默认情况下系统会使用内置的视图引擎,如果使用第三方的视图引擎,变量的分配方式会有所不同。......
2023-11-04
关于模型的细节在前面的内容中已经有过介绍,在此就不重复叙述。ThinkPHP的基础模型类名为Model,该类定义了操作数据库的常用方法,继承于Model类的PHP类称为自定义模型。在其他一些MVC框架中,模型被映射成一张数据表,但在ThinkPHP中模型并非一定要映射为一张数据表,它更像是控制器的中间件,这层中间件能够操作数据库、读写文件、数据转换等。ThinkPHP对模型的定义不太严格,对中小型的团队开发而言,这种MVC处理方式是高效和灵活的,开发人员可以像使用PHP普通类一样调用模型,下面将介绍怎样创建一个正确的自定义模型类。
在home/Lib/Model目录下创建一个PHP文件,并命名为UserModel.class.php,打开该文件,创建一个PHP类,命名为UserModel,并使该类继承于Model类。这样,UserModel.class.php就是一个标准的ThinkPHP项目模型文件。为了便于讲解,现在需要让该模型返回一些数据,代码如下。
上述类文件代码中共有两种方法。userData方法用于存放用户数据,在实际应用开发中这些数据可以在数据库、NOSQL或者文本文件中获取,这里为了方便讲解,只使用PHP数组存放用户数据;infoData方法将根据参数userId返回相应的用户数据。其中infoData使用了public修饰符,表示该方法是公开可调用的,而userData方法使用protected修饰符,限制了该方法只能在本模型内使用。通过前面的介绍,可见模型与常见的PHP类非常类似,如果读者不习惯模型这一称呼,不妨暂时可以理解为项目类。虽然如此,模型与标准的PHP类还是有些不同的,在一些应用场合下两者不能混为一谈,在自定义模型时需要注意以下事项。
➢模型的文件命名规则必须要严格按照“模型名+Model+.class.php”的方式进行命名。
➢模型名称首字母必须为大写,后缀名称.class.php不能写成.php。
➢模型类必须继承于Model(或者AdModel)类,该类是一个实例类,自定义的模型类也必须为实例类(不能定义为抽象类、静态类等)。(www.chuimin.cn)
➢虽然在ThinkPHP中模型未必要与数据库中的数据表进行映射,但事实上模型都是用于处理数据库信息的,所以应该让模型名与数据表名相对应。
➢项目中自定义的模型应尽量避免互相继承。
➢模型类不能使用构造函数。
➢模型类方法尽量避免使用静态方法。
有关PHP MVC开发实战的文章
ThinkPHP的模板引擎高效之处在于灵活的视图标签,熟悉这些标签的使用方式将能够提高视图模板的设计水平。接下来将从基本的创建视图开始,然后深入介绍默认视图引擎的使用。创建一个视图可分为以下几个步骤。需要注意的是,使用默认的{$}边界符,在视图模板中使用JavaScript等脚本时,有可能造成冲突。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
接下来将以HAS_ONE、BELONGS_TO、HAS_MANY这3种最常见的关联模型类型作为讲解对象,深入浅出地介绍关联模型的CURD实际应用。关联查询可以使用所有Model基础模型的CURD操作方法,例如find、delete等。HAS_MANY是关联模型中最常用的操作,HAS_MANY的使用非常简单,和HAS_ONE相比,只需要修改其中的关系类型即可,其他的元素几乎不用修改。......
2023-11-04
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
在模型与表映射过程中,系统会智能地根据配置信息处理好模型名与表名之间的关系。例如上述代码中的User表名,事实上数据库中并不存在User表,但是系统会根据配置信息DB_PREFIX指定的数据表名前缀智能地添加到模型中,因为User首字母为大写,系统会强制给User添加表前缀,最终的表名称为tpk_user。模型映射不仅能够智能地添加表前缀,还可以添加表后缀。假设数据表名为tp_user_local,那么在模型映射时只需将表名与后缀名首字母改成大写即可。......
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
相关推荐