Yii框架:快速构建高效CRUD应用的指南
Yii是一个高性能的PHP框架,以其速度、安全性以及对Web 2.0应用的良好支持而闻名。它遵循“约定优于配置”的原则,这意味着只要遵循其规范,就能编写比其他框架少得多的代码(更少的代码意味着更少的bug)。此外,Yii还提供了许多开箱即用的便捷功能,例如脚手架、数据访问对象、主题、访问控制、缓存等等。本文将介绍使用Yii创建CRUD系统的基础知识。
关键要点
yiic
用于创建具有合适目录结构的骨架应用。Yii遵循MVC和OOP原则,URL结构为http://localhost/yiitest/index.php?r=controllerID/actionID
。控制器和要调用的方法是根据URL中的ID确定的。gii
可用于生成模型、控制器和表单,用于CRUD操作,从而快速开发CRUD系统。例如,用户可以对博客文章执行CRUD操作的简单系统可以在几分钟内开发完成。入门
假设您已经在系统上安装了Apache、PHP(5.1或更高版本)和MySQL,因此第一步是下载框架文件。访问Yii官方网站并下载最新的稳定版本(本文撰写时为1.1.13)。解压ZIP文件以获取文件夹yii-1.1.13.e9e4a0
(版本标识符可能因您下载的版本而异),将其重命名为yii
,然后将其移动到您的Web可访问根目录。在我的系统中,这是C:\wamp\www
,因此框架文件的路径将为C:\wamp\www\yii
。在本文中,我将其称为<yiiroot></yiiroot>
,以便即使您的设置不同,您也能轻松地跟随操作。接下来,我们应该检查Yii的哪些功能将受我们的系统支持。在浏览器中访问http://localhost/yii/requirements/
以查看框架的要求详细信息。由于我们将使用MySQL数据库,因此您应该启用了MYSQL PDO扩展。
我们希望快速检查Yii的要求,这就是我们将文件放在可访问目录中的原因,但建议将Yii文件保存在Web根目录之外。检查之后,您可以随意将其移动到其他位置。
继续前进
每个Web应用程序都有一个目录结构,Yii应用程序也需要在Web根目录内维护分层结构。要使用合适的目录结构创建骨架应用程序,我们可以使用Yii的命令行工具yiic
。导航到Web根目录并键入以下内容:
<yiiroot>/framework/yiic webapp yiitest
这将创建名为yiitest
的骨架应用程序,其中包含最少必需的文件。在其中,您将找到index.php
,它用作入口脚本;它接受用户请求并决定哪个控制器应该处理该请求。Yii基于MVC和OOP原则,因此您应该熟悉这些主题。如果您不熟悉MVC,请阅读SitePoint系列文章《MVC模式和PHP》,它提供了一个很好的介绍。Yii URL看起来像http://localhost/yiitest/index.php?r=controllerID/actionID
。例如,在博客系统中,URL可能是http://localhost/yiitest/index.php?r=post/create
。post
是控制器ID,create
是操作ID。入口脚本根据ID决定要调用哪个控制器和方法。ID为post
的控制器必须命名为PostController
(ID从类名中去除后缀“Controller”并将第一个字母转换为小写)。操作ID是以类似的方式存在的控制器内方法的ID;在PostController
中,将有一个名为actionCreate()
的方法。可能有多个与控制器关联的视图,因此我们将视图文件保存在protected/views/*controllerID*
文件夹中。我们可以在上述目录中为我们的控制器创建一个名为create.php
的视图文件,然后只需编写以下代码即可将此视图呈现给用户:
public function actionCreate() { $this->render('create'); }
如有必要,也可以向视图传递其他数据。操作如下:
$this->render('create', array('data' => $data_item));
在视图文件中,我们可以通过$data
变量访问数据。视图还可以访问$this
,它指向呈现它的控制器实例。此外,如果您想要用户友好的URL,可以在protected/config/main.php
中取消注释以下内容:
'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( '<w>/<d>'=>'<controller>/view', '<w>/<w>/<d>'=>'<controller>/<action>', '<w>/<w>'=>'<controller>/<action>', ) )
然后,URL将看起来像http://localhost/yiitest/controllerID/actionID
。
开发CRUD应用程序
现在您已经了解了重要的Yii约定,是时候开始使用CRUD了。在本节中,我们将开发一个简单的系统,用户可以在其中对博客文章执行CRUD操作(创建、检索、更新和删除)。
步骤1
创建MySQL数据库yiitest
,并在其中创建一个名为posts
的表。出于本文的目的,该表将只有3列:id、title和content。
CREATE TABLE posts ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100), content TEXT )
打开应用程序的配置文件(protected/config/main.php
)并取消注释以下内容:
'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=yiitest', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', )
将testdrive
替换为我们的数据库名称,即yiitest
。显然,您还应该提供Yii连接所需的凭据。
步骤2
在Yii中,每个数据库表都应该有一个对应类型的模型类CActiveRecord
。好处是,我们不必直接处理数据库表。相反,我们可以使用与表的不同行对应的模型对象。例如,Post
类是posts
表的模型。此类的对象表示来自posts
表的一行,并具有表示列值的属性。为了快速生成模型,我们将使用Yii的基于Web的工具gii
。此工具可用于生成模型、控制器和表单,用于CRUD操作。要在项目中使用gii
,请在应用程序的配置文件中找到以下内容并取消注释它并添加密码。
<yiiroot>/framework/yiic webapp yiitest
然后使用以下URL访问gii
:http://localhost/yiitest/index.php?r=gii
。如果您使用的是用户友好的URL,则URL为:http://localhost/yiitest/gii
。单击“模型生成器”。gii
将询问您表名;为表名输入“posts”,为模型使用名称“Post”。然后单击“生成”以创建模型。
检查protected/models
,您将在其中找到文件Post.php
。
步骤3
现在单击“CRUD生成器”。将模型名称输入为“Post”。控制器ID将自动填充为“post”。这意味着将在PostController.php
名称下生成一个新的控制器。单击“生成”。该过程将生成控制器以及用于CRUD操作的几个视图文件。
现在您有了一个全新的CRUD应用程序!单击“立即试用”链接进行测试。要管理帖子,您需要以admin/admin
身份登录。要创建新帖子,您需要访问http://localhost/yiitest/post/create
,要更新特定帖子,只需将浏览器指向http://localhost/yiitest/post/update/postID
即可。同样,您可以列出所有帖子并删除其中一些或全部帖子。
结论
在开发Web 2.0项目方面,Yii非常强大。事实上,我们刚刚看到在短短几分钟内创建功能齐全的CRUD系统是多么容易!显然,Yii可以为您节省大量工作,因为您不必从头开始。Yii为我们提供了基础,我们可以根据需要进行扩展。
(后续的FAQ部分,由于篇幅过长,建议另行整理成单独的文档。)
以上是PHP主|在几分钟内用yii构建一个CRUD应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!