搜索

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></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></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></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></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
继续使用PHP:耐力的原因继续使用PHP:耐力的原因Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python:探索他们的相似性和差异PHP和Python:探索他们的相似性和差异Apr 19, 2025 am 12:21 AM

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP和Python:解释了不同的范例PHP和Python:解释了不同的范例Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:深入了解他们的历史PHP和Python:深入了解他们的历史Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

在PHP和Python之间进行选择:指南在PHP和Python之间进行选择:指南Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和框架:现代化语言PHP和框架:现代化语言Apr 18, 2025 am 12:14 AM

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHP的影响:网络开发及以后PHP的影响:网络开发及以后Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

See all articles

热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

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

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器