首页 >后端开发 >php教程 >选择YII 2框架的7个理由

选择YII 2框架的7个理由

Jennifer Aniston
Jennifer Aniston原创
2025-02-19 09:37:13608浏览

选择YII 2框架的7个理由

去年年底,SitePoint发表了一篇文章,重点介绍了顶级PHP框架。并列第四个位置是YII(发音为 yee

)框架。当时,可用的最新版本为1.1.14。最近,YII 2.0可用,因此您可以开始在生产中使用它。> >当我们最近在RC状态处于RC状态时确实介绍了它,但它刚刚达到了完整的发布状态,我们觉得是时候以某些原因来重新访问该主题。 钥匙要点

> yii 2框架很容易安装,使用Composer处理的直接安装和配置过程节省了开发人员的时间。

>该框架利用现代技术,作为纯OOP框架运行,并利用高级PHP功能,例如晚期静态绑定,SPL类和接口和匿名功能。
    yii 2是高度扩展的,几乎可以自定义框架的每个组件以满足特定的需求。
  • >该框架鼓励测试,与编码疗法紧密整合,一个PHP测试框架,简化了创建单元,功能和接受测试的过程。
  • yii 2用其安全应用程序组件简化了安全性,该组件公开了几种方法来帮助创建安全应用程序。它还包括用于用户身份验证和授权的现成类。
  • >
  • 1。易于安装
  • 对于网络开发人员来说,时间是金钱,没有人愿意将宝贵的时间花在复杂的安装和配置过程上。
  • >使用作曲家处理安装。如果您想对安装过程进行描述,SitePoint最近在此处发表了一篇很棒的文章。即使我的网站具有单独的前端和后端组件,我也倾向于使用基本的应用模板。相反,我选择在我的站点的后端部分使用一个模块。 (最好将YII模块描述为位于主要应用程序内的迷你应用程序)。
  • >
  • >
note

:以后示例中的许多目录参考使用简单模板中的目录结构。

2。利用现代技术

YII是一个纯粹的OOP框架,并利用了PHP的一些更高级功能,包括晚期静态绑定,SPL类和接口和匿名功能。

>所有类都是命名的,这使您可以利用其兼容PSR-4的自动加载器。这意味着,包括YII的HTML助手类包括:>

> yii还允许您定义别名以帮助简化您的名称空间。在上面的示例中,该使用语句将加载一个类定义,该类别默认位于目录/供应商/yiisoft/yii2/helpers中。 该别名在第79行的基本级课程中定义
<span>use yii<span>\helpers\Html</span>;</span>

>框架本身是使用作曲家以及其扩展名安装的。甚至发布扩展的过程也很容易,就像创建自己的作曲家。

3。高度扩展

yii就像一件外观,看起来很棒,但也很容易量身定制以满足您的需求。实际上,框架的每个组件都是可扩展的。一个简单的例子是在您的观点中增加了独特的身体ID。 (如果您有兴趣知道为什么要这样做,请看一下这篇文章)。

首先,我将在我的appComponents目录中创建一个使用name viev.php的文件,然后添加以下内容:

>

然后,在我的主布局文件(appviewslayoutsmain.php)中,我将以下内容添加到我的html的主体标签中:

<span>public static $aliases = ['@yii' => __DIR__];</span>

>最后,我将以下内容添加到我的主要配置文件中,以便让yii知道使用我的扩展视图类,而不是其自己的默认值:

<span>namespace app<span>\components</span>;
</span>
<span>class View extends yii<span>\web\View</span> {
</span>
    <span>public $bodyId;
</span>
    <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */
</span>
    <span>public function getBodyIdAttribute() {
</span>        <span>return ($this->bodyId != '') ? '' : '';
</span>    <span>}
</span>
<span>}</span>

4。鼓励测试

<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
YII与编码疗法紧密地集成在一起。 CodeCeption是一个很好的PHP测试框架,可帮助简化为应用程序创建单元,功能和接受测试的过程。因为您正在为所有应用程序编写自动测试,对吗?

使用此配置,以下情况将发生:

<span>return [
</span>    <span>// ...
</span>    <span>'components' => [
</span>        <span>// ...
</span>        <span>'view' => [
</span>            <span>'class' => 'app\components\View'
</span>        <span>]   
</span>    <span>]
</span><span>];</span>
>在您的功能和接受测试期间发送的任何电子邮件都会写入文件而不是发送。

测试中的URL将采用格式index.php/Controller/Action而不是/Controller/Action

    您的测试将使用您的测试数据库,而不是您的生产数据库。
  1. > YII框架的特殊模块也内部也存在。它为TestGuy类添加了几种方法,这些方法可帮助您在功能测试中使用主动记录(YII ORM)。例如,如果您想查看使用用户名“ testuser”成功创建了新用户的注册表格,则可以执行以下操作:
  2. 5。简化了安全性
安全性是任何Web应用程序的关键部分,幸运的是,YII具有一些很棒的功能来帮助您减轻您的思维。

YII带有一个安全应用程序组件,该组件揭示了几种方法,以帮助创建更安全的应用程序。一些更有用的方法是:

  • 生成Passwordhash:从密码和随机盐中生成安全的哈希。此方法为您制作一个随机盐,然后使用PHP的crypt功能从提供的字符串中创建一个哈希。
  • > ValidatePassword:这是生成Passwordhash的伴奏函数,并允许您检查用户提供的密码是否匹配您存储的哈希。
  • generaterandomkey:允许您创建任何长度的随机字符串
  • 在所有不安全的HTTP请求方法(put,post,post,delete)上,
yii自动检查有效的CSRF令牌,并在使用activeform :: begin Form(begin Form(:begin)方法创建打开表单标签时,将生成并输出令牌。可以通过编辑主配置文件来禁用此功能以包含以下内容:

>

为了保护XSS,YII提供了另一个称为HTMLPurifier的帮助者类。该类具有一个名为“进程”的单个静态方法,并将使用同名流行的过滤器库过滤您的输出。
<span>use yii<span>\helpers\Html</span>;</span>

yii还包括用于用户身份验证和授权的现成类。授权分为两种类型:ACF(访问控制过滤器)和RBAC(基于角色的访问控制)。

两者的简单是ACF,可以通过在控制器的行为方法中添加以下以下方法来实现:

>前面的代码告诉DefaultControllerTo允许访客用户访问登录名并查看操作,但不能访问Create Action。 (?是针对匿名用户的别名, @是指身份验证的用户)。

> RBAC是一种更强大的方法,可以指定用户可以在整个应用程序中执行特定操作。它涉及为您的用户创建角色,为您的应用程序定义权限,然后为其预期的角色启用这些权限。如果您想创建主持人角色,并且允许分配给此角色的所有用户批准文章,则可以使用此方法。
<span>public static $aliases = ['@yii' => __DIR__];</span>

>您还可以使用RBAC定义规则,RBAC允许您在特定条件下授予对应用程序某些方面的访问权限。例如,您可以创建一个规则,该规则允许用户编辑自己的文章,而不是由他人创建的文章。

6。缩短开发时间

大多数项目都涉及一定数量的重复任务,这些任务没有人浪费时间。 YII为我们提供了一些工具,可以帮助您更少的时间在这些任务上,并有更多的时间自定义您的应用程序以适应客户的需求。

这些工具中最强大的工具之一称为“ GII”。 GII是一种基于Web的代码脚手架工具,它允许您快速创建代码模板:>

>模型

控制器

表格

    模块
  • 扩展
  • > CRUD控制器动作和视图
  • GII高度可配置。您可以将其设置为仅在某些环境中加载。只需按以下方式编辑Web配置文件:
  • <span>use yii<span>\helpers\Html</span>;</span>

    这可以确保GII只有在将YII环境变量设置为>开发>时才加载,并且只有在通过Localhost访问时才加载。

    现在让我们看一下模型生成器:

    选择YII 2框架的7个理由

    >该表名称使用打字机窗口小部件来猜测您的模型与哪个表相关联,并且所有字段都有一个翻转工具提示,以提醒您如何填写它们。您可以在要求GII生成它之前预览代码,并且所有代码模板都是完全可自定义的。

    >还有几种命令行工具可帮助创建用于数据库迁移,消息翻译(I18N)和数据库固定装置的代码模板,以进行自动测试。例如,您可以使用此命令创建一个新的数据库迁移文件:

    这将在{appdir}/迁移中创建一个新的迁移模板,该模板看起来像这样:

    >
    <span>public static $aliases = ['@yii' => __DIR__];</span>

    >所以我想在此表中添加几列。我只需将以下内容添加到UP方法:

    >
    <span>namespace app<span>\components</span>;
    </span>
    <span>class View extends yii<span>\web\View</span> {
    </span>
        <span>public $bodyId;
    </span>
        <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */
    </span>
        <span>public function getBodyIdAttribute() {
    </span>        <span>return ($this->bodyId != '') ? '' : '';
    </span>    <span>}
    </span>
    <span>}</span>

    ,然后确保我可以扭转迁移,我将编辑下调方法:>

    <span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
    创建表仅涉及在命令行上运行命令:>

    并删除表:
    <span>return [
    </span>    <span>// ...
    </span>    <span>'components' => [
    </span>        <span>// ...
    </span>        <span>'view' => [
    </span>            <span>'class' => 'app\components\View'
    </span>        <span>]   
    </span>    <span>]
    </span><span>];</span>

    7。易于调整以获得更好的性能
    <span>return [
    </span>    <span>'components' => [
    </span>        <span>'mail' => [
    </span>            <span>'useFileTransport' => true,
    </span>        <span>],
    </span>        <span>'urlManager' => [
    </span>            <span>'showScriptName' => true,
    </span>        <span>],
    </span>        <span>'db' => [
    </span>                <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test',
    </span>        <span>],
    </span>    <span>],
    </span><span>];</span>

    >每个人都知道一个慢速的网站会创建不满的用户,因此yii为您提供了几种工具,可以帮助您挤出更快的速度。

    <span>$I->amOnPage('register');
    </span><span>$I->fillField('username', 'testuser');
    </span><span>$I->fillField('password', 'qwerty');
    </span><span>$I->click('Register');
    </span><span>$I->seeRecord('app\models\User', array('name' => 'testuser'));</span>
    >所有YII的缓存组件从YII/缓存/缓存延伸,它使您可以在使用常见API时选择所需的任何缓存系统。您甚至可以同时注册多个缓存组件。 YII当前支持数据库和文件系统缓存,以及APC,memcache,redis,wincache,Xcache和Zend Data Cache。

    默认情况下,如果您使用的是活动记录,则YII会运行额外的查询,以确定生成模型所涉及的表格架构。您可以通过编辑主配置文件来设置应用程序来缓存这些架构:

    >

    >最后,YII有一个命令行工具来促进前端资产的缩小。只需运行以下命令即可生成配置模板:

    然后编辑配置以指定您要执行的缩小工具(例如,闭合编译器,YUI压缩机或uglifyjs)。生成的配置模板将看起来像这样:

    >
    <span>return [
    </span>        <span>'components' => [
    </span>            <span>'request' => [
    </span>                <span>'enableCsrfValidation' => false,
    </span>            <span>]
    </span>    <span>];</span>

    接下来,运行此控制台命令以执行压缩。

    <span>use yii<span>\filters\AccessControl</span>;
    </span>
    <span>class DefaultController extends Controller {
    </span>    <span>// ...
    </span>    <span>public function behaviors() {
    </span>        <span>return [
    </span>            <span>// ...
    </span>            <span>'class' => AccessControl<span>::</span>className(),
    </span>            <span>'only' => ['create', 'login', 'view'],
    </span>                <span>'rules' => [
    </span>                <span>[
    </span>                    <span>'allow' => true,
    </span>                    <span>'actions' => ['login', 'view'],
    </span>                    <span>'roles' => ['?']
    </span>                <span>],
    </span>                <span>[
    </span>                    <span>'allow' => true,
    </span>                    <span>'actions' => ['create'],
    </span>                    <span>'roles' => ['@']
    </span>                <span>]
    </span>            <span>]
    </span>        <span>];
    </span>    <span>}
    </span>    <span>// ...
    </span><span>}</span>

    >最后,编辑您的Web应用程序配置文件以使用压缩资产。

    <span>if (YII_ENV_DEV) {
    </span>    <span>// ...
    </span>    <span>$config['modules']['gii'] = [
    </span>        <span>'class' => 'yii\gii\Module',
    </span>        <span>'allowedIPs' => ['127.0.0.1', '::1']
    </span>    <span>]
    </span><span>}</span>
    >

    注意:

    >您必须手动下载并安装这些外部工具。
    yii migrate<span>/create create_user_table</span>
    >

    结论

    >像任何好的框架一样,yii可以帮助您快速创建现代的Web应用程序,并确保它们的表现良好。它推动您通过为您做很多繁重的举重来创建安全和可测试的站点。您可以完全按照提供的方式轻松地使用其大多数功能,也可以修改每个功能以满足您的需求。我真的鼓励您检查一下您的下一个网络项目!

    您尝试过yii 2吗?你会?让我们知道!

    经常询问有关yii 2框架

    的问题(常见问题解答)

    >为什么YII 2框架被认为是高度扩展的?

    yii 2框架被认为是高度扩展的,因为它允许开发人员自定义核心代码的几乎每个部分。这意味着,如果开发人员需要调整框架处理某些任务的方式,则可以执行此操作,而无需直接修改核心代码。这是一个重要的优势,因为它允许具有高度的灵活性和适应性,因此更容易量身定制框架以满足特定的项目要求。

    yii 2框架如何确保高性能? > YII 2框架通过其有效的懒惰加载技术确保高性能。这意味着它仅加载特定过程所需的组件,从而减少服务器上的负载并改善应用程序的整体性能。此外,YII 2还支持数据缓存,这进一步增强了其性能。

    >

    是什么使YII 2框架成为Web开发的安全选择?

    yii 2框架框架具有强大的安全功能,内置了其核心的强大安全功能。它提供内置工具,用于输入验证,输出过滤,SQL注入预防和跨站点脚本(XSS)预防。这些功能使其成为开发需要处理敏感数据的Web应用程序的安全选择。

    >

    yii 2框架如何支持快速开发?

    yii 2框架通过其强大的代码生成来支持快速开发工具,GII。 GII允许开发人员快速为模型,控制器,表单,模块和扩展程序生成代码。这大大减少了编写样板代码所需的时间,使开发人员可以更多地专注于业务逻辑。

    我可以使用yii 2 Framework使用第三方代码吗?旨在与第三方代码无缝合作。它使用Composer Dependenty Manager,这使得将第三方库和软件包集成到您的YII 2应用程序中变得易于。

    >

    > yii 2框架如何处理错误和异常?具有全面的错误处理和记录系统。它可以处理PHP错误和异常,并提供各种记录目标,包括文件,电子邮件和浏览器控制台。这使得更容易调试和解决您的应用程序中的问题。

    >

    > yii 2框架适合开发复杂的Web应用程序吗?它提供了一系列工具和功能,例如MVC架构,数据库抽象层和缓存支持,这些工具和功能使构建和维护复杂的应用程序变得更加容易。

    > yii 2 Framework如何支持国际化?

    YII 2框架为国际化(I18N)提供了广泛的支持。它包括日期和时间格式,数字格式和消息翻译的功能,使为全球受众开发应用程序变得更加容易。

    yii 2框架可用哪种社区支持? > YII 2框架有一个大型而活跃的开发人员社区。在线提供许多论坛,博客和教程,您可以在其中找到帮助和建议。此外,官方YII网站还提供了全面的文档和用户指南。

    > yii 2框架如何与其他PHP框架进行比较?

    yii 2框架因其高框架而脱颖而出。性能,安全功能和可扩展性。它还支持快速发展,使其成为小型和大型项目的流行选择。但是,项目的最佳框架取决于开发团队的特定要求和专业知识。

以上是选择YII 2框架的7个理由的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn