本文档适用于已熟悉Yii2的读者。 这意味着将所有与Yii 3相关的信息集中在一个地方,以便更容易走上正轨。
Yii 3是Yii框架的第二次重写。
最初从2.1分支开始,后来因为所有向后兼容性破坏而决定切换到3.X系列。 从3.0开始,Yii将遵循Sementic Versionning。
这个重写解决了Yii 2遭受的许多问题,比如框架与jQuery,bower,bootstrap相结合。 [TODO:添加更多关于Yii2的grieff]
以下是Yii 3中的主要更改。您可以查看完整的CHANGELOG以获取详尽的列表。
框架源代码已被拆分为多个包,并且在其核心级别,Yii不再对您的开发堆栈或您将使用的功能进行假设。
这使您可以选择组成应用程序所需的软件包。
这种重组也是维护的好消息,因为这些包将单独发布,从而允许更频繁的更新。
已删除自定义PHP类自动加载器,以支持 Composer 的 PSR-4 实现。 这意味着为了让Yii看到你的类,你必须在 composer.json 中显式注册你的命名空间。 我们稍后会看到一个例子。
通过实现以下PSR,Yii 3在 PHP-FIG 建议之后采取了一些积极的步骤:
现在,日志记录符合PSR-3
缓存现在符合PSR-16
依赖注入现在符合PSR-11
如果您曾经使用Yii 2安装了扩展程序,您可能/当然已经找到了自己的扩展 README 文件,在您自己的config/ main.php
文件中查找要复制/粘贴的配置块。
这通常会导致:
一个巨大的配置文件(您可能决定将其拆分为较小的文件) 当使用新的/更改的配置选项重新发布新版本的扩展时,将更新非平凡配置。
Yii3 采用了另一种方法。 每个软件包捆绑自己的配置,可能会开箱即用。 如果需要,您可以从配置文件中覆盖它们。
这一切都是通过利用 hiqdev/composer-config-plugin composer插件完成的,该插件在您运行 composer dump-autoload
(也称为composer du
)时负责扫描和合并所有配置。
您可以阅读 Yii2 projects alternative organization,以深入解释 hiqdev/composer-config-plugin
背后的动机。
软件包作者将有责任通过严格的版本化版本来避免引入BC中断。
...
以下是Yii 3中引入的新软件包,可在此官方列表中找到。
我们简要介绍一下:
这是Yii的新内核。 它定义了基本框架及其核心功能,如行为,i18n,邮件,验证...
您很少想直接安装 yiisoft/yii-core
。 相反,您将安装以下一项或多项:
这三个包被视为扩展,负责实现它们所指的每个“通道”的基本功能:
yii-console
实现了构建控制台应用程序所需的一切(命令的基本控制器,命令助手,...)yii-web
实现了构建Web应用程序所需的一切(资产管理,会话,请求处理..)yii-rest
实现了构建REST接口所需的一切(ActiveController,..)在Yii 3中,库不依赖于Yii,并且可以在框架之外使用。 他们的包名是 yiisoft/
没有yii-prefix的东西。
yiisoft/db
的驱动程序DB的各种驱动程序也已分为包:
扩展取决于(至少)yii-core。 除了上面已经遇到的3个扩展(yii-console,yii-web,yii-api),这些包都可用
开发环境扩展
页面渲染扩展
数据渲染
JS&CSS框架集成
小部件
杂项
Yii项目模板和基础应用程序
这是一个非常基本的Yii项目模板,您可以使用它来开始开发。
您可能希望选择这三个启动器中的一个或多个以在下一个项目中安装:
让我们尝试在下一节中运行Web基础模板。
让我们尝试使用 Yii3 和提供的项目模板运行Web应用程序。
composer create-project --prefer-dist --stability=dev yiisoft/yii-project-template myapp
cd myapp
这是创建的结构:
.
├── LICENSE
├── README.md
├── composer.json
├── composer.lock
├── config
│ ├── common.php
│ └── params.php
├── docker-compose.yml
├── hidev.yml
├── public
│ ├── assets
│ ├── favicon.ico
│ ├── index.php
│ └── robots.txt
├── runtime
└── vendor
您将无法使用./vendor/bin/yii serve
立即启动Web服务器,因为它会抱怨不知道“app”类。
实际上,此项目模板仅在您的应用程序中引入最低限度:缓存,依赖项注入和日志记录。 模板不会对您正在构建的应用程序类型(web,cli,api)做出假设。
你可以从头开始使用这个裸模板,选择你想要使用的扩展和包并开始开发,或者你可以选择提供的三个启动器中的一个。
由于我们正在进行Web应用程序,因此我们需要一个资产管理器。 我们可以选择其中一个:
让我们选择Foxy(个人品味,因为composer 来自 Tunisia 的速度很慢):
composer require "foxy/foxy:^1.0.0"
我们现在可以安装 yii-base-web
启动器并运行我们的应用程序:
composer require yiisoft/yii-base-web
vendor/bin/yii serve
通过访问 http://localhost:8080/ 您现在应该看到如下内容:
检查我们的项目结构,除了创建这三个条目之外,没有什么真正改变:
那么我们在浏览器中看到的内容来自哪里?
探索 yiisoft/yii-base-web
结构:
如果您浏览vendor/yiisoft/yii-base-web
中的文件夹,您将看到该模板实际上是一个项目本身,具有以下结构:
.
├── LICENSE.md
├── README.md
├── composer.json
├── config
│ ├── common.php
│ ├── console.php
│ ├── env.php
│ ├── messages.php
│ ├── params.php
│ └── web.php
├── phpunit.xml.dist
├── public
│ └── css
│ └── site.css
├── requirements.php
├── runtime
└── src
├── assets
│ └── AppAsset.php
├── commands
│ └── HelloController.php
├── controllers
│ └── SiteController.php
├── forms
│ ├── ContactForm.php
│ └── LoginForm.php
├── mail
│ └── layouts
├── messages
│ ├── et
│ ├── pt-BR
│ ├── ru
│ └── uk
├── models
│ └── User.php
├── views
│ ├── layouts
│ └── site
└── widgets
└── Alert.php
如果您已经使用Yii2和基本模板开发了应用程序,那么文件夹和文件应该对您有意义。
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
那天抽点时间再试下。
Reading D:\work\yii3\myapp/vendor/composer/installed.json
Writing lock file
Generating autoload files
Assembling config files
下载成功去试试,嘿嘿
@ITer
composer require yiisoft/yii-base-web
这行报错。
Could not find a version of package yiisoft/yii-base-web matching your mini
mum-stability (stable). Require it with an explicit version constraint allo
wing its desired stability.
成功安装 只是界面不太一样。
上面的那个错是路径问题。
@kittyfamous 厉害的
试了下,似乎还不能开发使用。
过些日子再研究了,先拿yii2折腾了。
又要借鉴酱油哥样式了。
这网站废了吗? 发个提问一周了都还在审核中……
学习学习