首页 理论教育PHPMVC开发实战-创建模型

PHPMVC开发实战-创建模型

【摘要】:ThinkPHP的基础模型类名为Model,该类定义了操作数据库的常用方法,继承于Model类的PHP类称为自定义模型。ThinkPHP对模型的定义不太严格,对中小型的团队开发而言,这种MVC处理方式是高效和灵活的,开发人员可以像使用PHP普通类一样调用模型,下面将介绍怎样创建一个正确的自定义模型类。在home/Lib/Model目录下创建一个PHP文件,并命名为UserModel.class.php,打开该文件,创建一个PHP类,命名为UserModel,并使该类继承于Model类。这样,UserModel.class.php就是一个标准的ThinkPHP项目模型文件。

关于模型的细节在前面的内容中已经有过介绍,在此就不重复叙述。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中模型未必要与数据库中的数据表进行映射,但事实上模型都是用于处理数据库信息的,所以应该让模型名与数据表名相对应。

➢项目中自定义的模型应尽量避免互相继承。

➢模型类不能使用构造函数。

➢模型类方法尽量避免使用静态方法。