首页 > 后端开发 > php教程 > YII 2.0的期望

YII 2.0的期望

Jennifer Aniston
发布: 2025-02-19 13:02:10
原创
636 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板