YII 2.0已发布到Beta,首次稳定版本的目标设定为2014年中期。Github问题列表列表有300个公开问题,而我写这篇文章的同时2913次关闭,并且两个数字仍在增加。 2.0RC里程碑的进度为99%。我的猜测是团队很接近,但是我们可能必须等待更长的时间。当我们都在等待时,让我们看看一个已经可以使用的示例,看看我们可以期望的。
钥匙要点- > YII 2.0引入了重大改进和更改,包括使用名称空间,特征和作曲家集成,增强其现代PHP框架功能。
- > 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 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代码,表单验证和两个可用于登录的用户。登录与以前相同;几乎一无所有。尽管如此,这还是一个很好的开始。
基本应用程序的设计发生了巨大变化。以前,您将获得一个基于蓝图CSS框架的应用程序,而现在我们从Twitter Bootstrap开始。改进?它可能与蓝图进行了比较,但是Bootstrap又比蓝图尝试过的要多得多。
Bootstrap将为您提供各种应用程序组件,并将加快构建应用程序。另一方面,有些人可能会争辩说所有站点都与Bootstrap看起来都一样(主题仅部分修复),这也将使您的站点更大的尺寸。无论哪种方式,使用YII 2.0的集成都使用YII2-Bootstrap扩展程序完成。这使得将Bootstrap组件集成在您的视图中非常容易。
>
>
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。占位符的格式和样式已经过认真的重新设计,可以提供更多格式的选项。一些示例: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
> <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,访问控制是控制器行为的一部分():
>>我确实注意到示例代码(不是框架本身!)缺少许多放映,并且有很多@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>
>模型> 不过,
派生的Activerecord经历了一些严重的变化。使用ActivereCord进行搜索的语法更像是编写查询,因为CDBCriteria已经消失了。它已被ActiveQuery替换为使检索信息更容易:关系定义也发生了巨大变化。让我们以博客作者的身份以一个网站发布,以发布有关用户发表评论的文章的文章。作者表的关系定义如下所述。我将从yii 1.1中的外观开始
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
如您所见,您将在大数组中定义主动记录的所有关系。在YII 2.0中,您必须定义Getter方法,该方法返回所有这些关系的ActiveQuery对象。 您必须使用“通过”关键字来定义中介表之间的关系。>
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
这是一个相当简单的示例。通过返回ActiveQuery对象的GETTER函数定义关系允许更多。例如,您可以添加一个特定函数,该功能可以通过在返回的ActiveQuery中添加where()调用来获取> 50个注释的帖子。一个有趣的补充是定义交叉DBMS关系的可能性。您可以定义MySQL和MongoDB或Redis之间的关系,并将其用作一个对象。 正如我之前所说的
>; PHP 5.4使短回声标签始终可用。这使得由混合PHP和HTML组成的视图更可读;<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 1.1和YII 2.0的部分。对于大型项目,这是创建安全迁移路径的好方法。将您的通用代码迁移到YII 2.0,并花点时间在更复杂或填充的零件上。
结论YII 2.0的文档质量从yii 1.1提高了。几年前,当我从YII 1.1开始时,我很难弄清楚东西,我觉得该文档比以前更为广泛。
>您是否已经看过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如何处理用户身份验证?yii 2.0提供了灵活的用户身份验证系统。它支持传统的用户名/密码身份验证和更现代的方法(例如Oauth和OpenID)。您还可以扩展内置的用户模型以添加自己的身份验证方法。
> yii 2.0如何处理错误处理和日志记录?
yii 2.0提供了可靠的错误处理和记录系统。它可以捕获和处理PHP错误和异常。这些错误可以以不同的格式登录并发送到不同的目的地,例如文件,电子邮件和浏览器。>
>如何测试我的yii 2.0应用程序?yii 2.0提供了测试框架基于Phpunit和硒。它支持单位测试和功能测试。您可以编写测试用例以测试模型,视图和控制器。测试框架还提供了模拟用户输入并检查输出的方法。
>
以上是YII 2.0的期望的详细内容。更多信息请关注PHP中文网其他相关文章!

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

你应该关心DependencyInjection(DI),因为它能让你的代码更清晰、更易维护。1)DI通过解耦类,使其更模块化,2)提高了测试的便捷性和代码的灵活性,3)使用DI容器可以管理复杂的依赖关系,但要注意性能影响和循环依赖问题,4)最佳实践是依赖于抽象接口,实现松散耦合。

是的,优化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)优化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,并避免使用

theKeyStrategiestosiminificallyBoostphpapplicationPermenCeare:1)useOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)优化AtabaseInteractionswithPreparedStateTemtStatementStatementSandProperIndexing,3)配置

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

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

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

禅工作室 13.0.1
功能强大的PHP集成开发环境

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

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