Yii框架:快速构建高效CRUD应用的指南
Yii是一个高性能的PHP框架,以其速度、安全性以及对Web 2.0应用的良好支持而闻名。它遵循“约定优于配置”的原则,这意味着只要遵循其规范,就能编写比其他框架少得多的代码(更少的代码意味着更少的bug)。此外,Yii还提供了许多开箱即用的便捷功能,例如脚手架、数据访问对象、主题、访问控制、缓存等等。本文将介绍使用Yii创建CRUD系统的基础知识。
关键要点
- Yii是一个高性能框架,适用于Web 2.0应用,提供许多便捷功能,例如脚手架、数据访问对象、主题、访问控制和缓存。它遵循约定优于配置的原则,减少代码量,从而降低bug的可能性。
- Yii的命令行工具
yiic
用于创建具有合适目录结构的骨架应用。Yii遵循MVC和OOP原则,URL结构为http://localhost/yiitest/index.php?r=controllerID/actionID
。控制器和要调用的方法是根据URL中的ID确定的。 - Yii的基于Web的工具
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中文网其他相关文章!

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

Laravel框架的Storage::download方法提供了一个简洁的API,用于安全地处理文件下载,同时管理文件存储的抽象。 以下是一个在示例控制器中使用Storage::download()的例子:

Laravel的服务容器和服务提供商是其架构的基础。 本文探讨了服务容器,详细信息服务提供商创建,注册,并通过示例演示了实际用法。 我们将从OVE开始


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境