目录
要求
什么变化了?
yii 2.0,带有许多新功能和对其前身的改进。现在,它支持使用命名空间的使用,这使得代码组织变得更加容易。它还引入了一个更灵活和强大的新路由系统。已重新设计了ActiverEcord类,以支持更多数据库类型,包括NOSQL数据库。该框架还包括一个新的Restful API开发支持,使构建API变得更加易。此外,YII 2.0具有改进的安全功能,包括内置CSRF(跨站点请求伪造)保护。
> yii 2.0如何处理国际化(I18N)?国际化(I18N)支持。它使您可以用不同的语言存储同一消息的多个翻译。您还可以根据语言环境格式化日期,数字和货币。 yii 2.0还支持基于上下文的复数形式和消息选择。
yii 2.0调试器是一个强大的工具,可以帮助您进行调试。您的申请。它收集并显示有关您应用程序的每个请求的信息,包括执行的SQL查询,请求和响应数据以及性能正时数据。您可以通过应用程序页面底部的面板访问此信息。
首页 后端开发 php教程 YII 2.0的期望

YII 2.0的期望

Feb 19, 2025 pm 01:02 PM

YII 2.0的期望

去年4月,

YII 2.0已发布到Beta,首次稳定版本的目标设定为2014年中期。Github问题列表列表有300个公开问题,而我写这篇文章的同时2913次关闭,并且两个数字仍在增加。 2.0RC里程碑的进度为99%。我的猜测是团队很接近,但是我们可能必须等待更长的时间。当我们都在等待时,让我们看看一个已经可以使用的示例,看看我们可以期望的。

钥匙要点

    > YII 2.0引入了重大改进和更改,包括使用名称空间,特征和作曲家集成,增强其现代PHP框架功能。 该框架已从蓝图CSS框架转变为Twitter Bootstrap,这不仅改变了美学,而且还为快速应用程序开发提供了广泛的UI组件。 在YII 2.0中进行错误处理已大修以将所有错误转换为异常,提供更有信息的输出并改善调试过程。 YII中的代码生成工具 gii在YII 2.0中仍然是不可或缺的,现在支持更好的代码生成CRUD操作和国际化。
  • > YII 2.0需要PHP 5.4或更高的PHP,并利用了高级PHP功能,这可能会影响与较旧的服务器环境的兼容性,但最终提供了更健壮和安全的框架。
  • >在2008年发行后,YII的第一个版本很快就变得很快。
  • yii使用其他框架,语言和图书馆中的许多想法:Prado,Ruby,Jquery,Symfony和Joomla都被公认为是灵感的来源。
  • >
  • > YII 2.0日期的第一个承诺可以追溯到2011年,但该开发项目是去年的。该团队进行了重写,目的是成为新一代PHP框架的最新状态。它采用了最新的技术和功能,例如作曲家,PSR,名称空间,特质等。
  • >值得一提的是,根据下载页YII版本1.1的支持将于2015年12月31日结束,因此我们确实有一些时间开始考虑进行过渡。
>

要求

>使用名称空间和特征的用法将要求提高到PHP 5.4。此外,当您开始开发时,您还需要MB_STRING,PDO和INTL扩展。如果您运行自己的服务器,这应该不是问题,但是如果您在共享环境下,则可能是问题。当然,随着该问题的及时,该问题将消失。

>

>安装

现在可以从作曲家安装 yii。我们将尽快仔细研究此安装方法。

当前,有两个申请示例可用。有一个基本示例,其中包含几页,联系页面和登录页面。高级示例添加了一个单独的前端和后端,数据库交互,注册和密码恢复。

入门

>我将从基本示例开始。如果您以前看过YII,则可以识别出YII 1.1随附的相同基本

WebApp。使用以下命令将基本示例与作曲家一起安装:>

然后,您可以通过打开http://localhost/yii2-app-basic/requirements.php来检查服务器是否满足您的需求。然后,实际应用程序将从http:// localhost/yii2-app-basic/web/运行。
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
登录后复制
登录后复制
登录后复制

这是要注意的第一个重要的事情:想法是,您将应用程序的词根设置为/path/to/to/to/application/web,就像与Symfony一样。目录布局从版本1.1改变了一点。如果仔细观察,更改将是有道理的,并将提高应用程序的安全性。

以前,所有应用程序组件(模型,视图,控制器,框架和供应商库)都将生活在受保护文件夹中的文档根下。这样,安全性取决于要尊重的.htaccess文件,这意味着您的应用程序默认情况下的应用程序是100%不安全的。将所有应用程序组件从文档根中移开,从而阻止Web服务器将应用程序组件发送给用户。

>

>您可能会发现自己正在寻找实际的框架来源。该框架是使用作曲家安装的组件,因此它将位于Vendoryiisoftyii目录下。在这里,您会发现更多,但是现在,我们将其留下。

>目前,让我们更改本地Web服务器配置,然后将文档root设置为/路径/到/application/web。我添加了一个VirtualHost http://yii2-app-basic.localhost/,但您认为适合自己的情况。默认配置设置为将脚本文件隐藏在URL中。如果您使用的是Apache,则需要在Web目录中添加.htaccess文件才能指示Apache进行重写,默认情况下不存在。

>

查看基本YII应用程序

>现在我们已经运行了基本应用程序,有些祝贺... >
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
登录后复制
登录后复制
登录后复制

谢谢!到目前为止,还没有火箭科学。

>您将从开始页面,关于页面的静态页面,联系页面和登录页面开始。联系页面和登录表具有与以前相同的功能; CAPTCHA代码,表单验证和两个可用于登录的用户。登录与以前相同;几乎一无所有。尽管如此,这还是一个很好的开始。YII 2.0的期望

基本应用程序的设计发生了巨大变化。以前,您将获得一个基于蓝图CSS框架的应用程序,而现在我们从Twitter Bootstrap开始。改进?它可能与蓝图进行了比较,但是Bootstrap又比蓝图尝试过的要多得多。
Bootstrap将为您提供各种应用程序组件,并将加快构建应用程序。另一方面,有些人可能会争辩说所有站点都与Bootstrap看起来都一样(主题仅部分修复),这也将使您的站点更大的尺寸。无论哪种方式,使用YII 2.0的集成都使用YII2-Bootstrap扩展程序完成。这使得将Bootstrap组件集成在您的视图中非常容易。

> 您会注意到的另一件事是底部的调试栏。就像在Symfony中一样,默认情况下安装和激活。它允许快速访问有关您的配置,请求和应用程序记录的大量信息。它将保留带有调试信息的请求的历史记录。

>

YII 2.0的期望

YII处理与通常情况下不同的错误。 YII将所有错误(致命和非致命)转换为例外。通过渲染有见地的输出来处理这些方法,将您指向您混乱的点或代码生成通知。即使是解析错误,YII 1.1都会归结为基本的PHP错误,也可以很好地介绍您的代码。这是我们大多数人都会欣赏的。

YII 2.0的期望

gii也再次存在并默认被激活。

>

YII 2.0的期望 GII将通过生成供您开始的代码来帮助您,这是另一种有助于加快开发的好工具。它将为您生成模型和控制器。 CRUD生成器将进一步走一步,并为所有操作生成完整的MVC集。 GII还将通过立即插入yii :: t()函数在需要它的地方生成更适合国际化的代码(I18N)。

>

>基本应用程序现在还带有一个简单的命令行应用程序,您可以在基础上构建。 yii 1.1已经支持了这一点,但是您必须从Wiki中获得一个示例。

这就是您在基本应用程序中找到的。还有一个可用的高级应用程序示例。它的结构有些不同,但可以为您的应用程序添加更多功能:

>

>用户授权,身份验证和密码还原。 一个应用程序分为前端和后端。

  • 继续浏览基本版本,让我们仔细研究并潜入代码吧……>

    什么变化了?

    发生了很多变化。一开始可能会使您感到困惑,但是我发现大多数更改很有意义,而且易于接受。这是我发现有趣,有趣或令人困惑的一些变化。

    > PHP 5.4要求使一些更改成为可能;阵列短标签可用。在视图中使用Echo简短标签也是安全的,因为这不再取决于配置设置。

    composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
    登录后复制
    登录后复制
    登录后复制
    一个很小的变化,但是您会很快遇到;之前,您将使用yii :: app()访问应用程序实例及其组件。在yii 2.0中,这从静态函数变为静态变量yii :: $ app。

    >翻译函数yii :: t()仍然与我们同在。它指示YII使用I18N组件将提供的文本转换为当前使用的语言。您也可以指示它替换变量。

    占位符的格式和样式已经过认真的重新设计,可以提供更多格式的选项。一些示例:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    登录后复制
    登录后复制
    登录后复制

    由于这种占位符格式,dateTimeFormatter消失了:>
    <span><span><?php
    </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
    </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
    </span></span><span><span>?></span>
    </span><span><span><?php echo $someVar; ?></span> //Yii 1.1
    </span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
    登录后复制
    登录后复制

    >此功能由ICU库提供。 YII文档称其为原始文档:“非常神秘”。我敢您阅读它并尝试理解它……希望YII文档及时包含一个更可读的版本。

    控制器
    <span><span><?php
    </span></span><span><span>echo `Yii<span>::</span>t('app', 'Hello, {username}!', [
    </span></span><span>  <span>'username' => $username,
    </span></span><span><span>]);
    </span></span><span><span>?></span></span>
    登录后复制

    >之前,如果您想使用YII访问控制功能,则AccessControl()将是控制器的函数。使用YII 2.0,访问控制是控制器行为的一部分():

    >

    这几乎与yii 1.1中的方式相同

    >我确实注意到示例代码(不是框架本身!)缺少许多放映,并且有很多@InHeritDoc的评论。这不是您从一个示例中期望的,但我认为这将是及时固定的。

    >
    <span><span><?php
    </span></span><span><span>echo <span>\Yii</span>::t('app', '{n, number} is spelled as {n, spellout}', ['n' => 81]);
    </span></span><span><span>echo <span>\Yii</span>::t('app', 'You are {n, ordinal} in line, please hold.', ['n' => 3]); //Will echo "You are 3rd in line, please wait.".
    </span></span><span><span>echo <span>\Yii</span>::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', array(
    </span></span><span>    <span>'n' => 14,
    </span></span><span><span>));
    </span></span><span><span>?></span></span>
    登录后复制
    >模型

    基本模型(以前的CModel)并没有太大变化。现在,方案允许您更改验证规则的执行。您可以根据当前场景更改需要验证的需要(即,在前端或后端使用时具有不同规则的模型)。

    > 不过,

    派生的Activerecord经历了一些严重的变化。使用ActivereCord进行搜索的语法更像是编写查询,因为CDBCriteria已经消失了。它已被ActiveQuery替换为使检索信息更容易:

    关系定义也发生了巨大变化。让我们以博客作者的身份以一个网站发布,以发布有关用户发表评论的文章的文章。作者表的关系定义如下所述。我将从yii 1.1中的外观开始
    composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
    登录后复制
    登录后复制
    登录后复制
    如您所见,您将在大数组中定义主动记录的所有关系。在YII 2.0中,您必须定义Getter方法,该方法返回所有这些关系的ActiveQuery对象。 您必须使用“通过”关键字来定义中介表之间的关系。

    >您现在有两个选择来定义此问题;通常,您会在关系函数中使用Via()方法。如果仅需要枢轴表之后的表中的数据,则还可以使用Viatable()方法来定义关系。与上面的示例相同,但现在适用于yii 2.0:

    >

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    登录后复制
    登录后复制
    登录后复制
    这是一个相当简单的示例。通过返回ActiveQuery对象的GETTER函数定义关系允许更多。例如,您可以添加一个特定函数,该功能可以通过在返回的ActiveQuery中添加where()调用来获取> 50个注释的帖子。 一个有趣的补充是定义交叉DBMS关系的可能性。您可以定义MySQL和MongoDB或Redis之间的关系,并将其用作一个对象。

    视图

    >在视图中要注意的主要内容是,$这不再是指控制器实例。从视图中,$这是yiiwebview对象的实例。可以通过$ this->上下文访问控制器。

    正如我之前所说的

    >; PHP 5.4使短回声标签始终可用。这使得由混合PHP和HTML组成的视图更可读;

    渲染()和renderpartial()函数也更改。在它会自动回声之前,您必须添加一个附加参数才能使渲染的输出作为字符串。 yii 2.0将始终返回render()上的字符串 - 就像呼叫一样,使其与小部件的行为方式更加一致。
    <span><span><?php
    </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
    </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
    </span></span><span><span>?></span>
    </span><span><span><?php echo $someVar; ?></span> //Yii 1.1
    </span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
    登录后复制
    登录后复制
    >

    >从yii 1.1

    升级

    您是否应该考虑将YII 1.1申请升级到YII 2.0? Brunoškvorc最近在SitePoint上写了有关旧版代码的文章。他认为,如果您使用的软件至关重要,则应在2个月内进行重写 - 尤其是

    >。我同意他的看法,建议您考虑一下您对应用程序感到认真,并希望在YII 1.1生命的尽头维护它。但是一如既往;这取决于您的情况。

    >有一个特别页面,专门用于在YII网站上升级YII。目前,最大的问题是您的扩展。如果您依靠很多扩展名,您将很难做到,因为社区需要花费一些时间来编写YII 2.0的扩展名。如果您是真正的专业人士,那么您当然可以认真看一下您使用的扩展名,并考虑(重新)写它们。

    迁移手册在应用程序中有一个关于运行YII 1.1和YII 2.0的部分。对于大型项目,这是创建安全迁移路径的好方法。将您的通用代码迁移到YII 2.0,并花点时间在更复杂或填充的零件上。

    结论

    浏览YII 2.0的权威指南,使我越来越热情地开始使用YII 2.0。我已经不得不阻止自己在一个新项目中使用它,因为我无法使用预生产代码中的问题。

    YII 2.0的文档质量从yii 1.1提高了。几年前,当我从YII 1.1开始时,我很难弄清楚东西,我觉得该文档比以前更为广泛。

    >您是否已经看过YII 2.0,甚至已经使用了一些东西了?请告诉我们您遇到了什么。我很想知道你的经历!

    经常询问有关yii 2.0

    的问题 与以前的版本相比,YII 2.0中有哪些新功能是什么?

    yii 2.0,带有许多新功能和对其前身的改进。现在,它支持使用命名空间的使用,这使得代码组织变得更加容易。它还引入了一个更灵活和强大的新路由系统。已重新设计了ActiverEcord类,以支持更多数据库类型,包括NOSQL数据库。该框架还包括一个新的Restful API开发支持,使构建API变得更加易。此外,YII 2.0具有改进的安全功能,包括内置CSRF(跨站点请求伪造)保护。

    >

    > yii 2.0如何处理国际化(I18N)?国际化(I18N)支持。它使您可以用不同的语言存储同一消息的多个翻译。您还可以根据语言环境格式化日期,数字和货币。 yii 2.0还支持基于上下文的复数形式和消息选择。

    >

    yii 2.0调试器是什么,它如何工作?

    yii 2.0调试器是一个强大的工具,可以帮助您进行调试。您的申请。它收集并显示有关您应用程序的每个请求的信息,包括执行的SQL查询,请求和响应数据以及性能正时数据。您可以通过应用程序页面底部的面板访问此信息。

    >

    >如何使用第三方扩展程序扩展yii 2.0?

    yii 2.0支持使用第三方扩展,可以使用Composer软件包管理器安装。安装后,您可以像YII的内置功能一样使用这些扩展名。 YII社区已经开发了广泛的扩展名,可提供其他功能,例如用户身份验证,表单验证和数据库抽象。

    > yii 2.0如何处理数据库迁移? yii 2.0提供功能强大的数据库迁移工具,使您可以版本控制数据库更改。您可以使用yii迁移/创建命令创建一个新的迁移。迁移脚本将包含用于应用和重新迁移的方法。然后,您可以使用YII迁移/UP命令应用迁移。

    > yii 2.0如何支持静止的API开发?

    yii 2.0提供了一组工具来帮助您开发RESTFULE API。它包括对路由,请求处理,响应格式和错误处理的支持。您还可以使用ActiveController类来快速为您的API生成CRUD(创建,读取,更新,删除)操作。

    yii 2.0 2.0 hange form norm vermation验证?

    yii 2.0提供了功能强大的功能形式验证系统。您可以在模型类中为表单字段定义验证规则。当提交表单时,YII将根据这些规则自动验证输入数据并生成适当的错误消息。

    >

    > yii 2.0如何处理用户身份验证?

    yii 2.0提供了灵活的用户身份验证系统。它支持传统的用户名/密码身份验证和更现代的方法(例如Oauth和OpenID)。您还可以扩展内置的用户模型以添加自己的身份验证方法。

    > yii 2.0如何处理错误处理和日志记录?

    yii 2.0提供了可靠的错误处理和记录系统。它可以捕获和处理PHP错误和异常。这些错误可以以不同的格式登录并发送到不同的目的地,例如文件,电子邮件和浏览器。

    >

    >如何测试我的yii 2.0应用程序?

    yii 2.0提供了测试框架基于Phpunit和硒。它支持单位测试和功能测试。您可以编写测试用例以测试模型,视图和控制器。测试框架还提供了模拟用户输入并检查输出的方法。>

以上是YII 2.0的期望的详细内容。更多信息请关注PHP中文网其他相关文章!

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

PHP 8.1中的枚举(枚举)是什么? PHP 8.1中的枚举(枚举)是什么? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

在PHPStorm中如何进行CLI模式的调试? 在PHPStorm中如何进行CLI模式的调试? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

See all articles