6. 缩短开发时间
大多数的项目都包含了重复的任务,没有人想把时间浪费在这些重复工作上面。Yii 提供了一些工具来帮助你在这些任务上花费更少的时间,把大多数时间都用在定制应用来满足你客户的需求上。
其中最强大的一个工具就是“Gii”。Gii是一个基于web脚手架代码工具,它可以让你快速的创建一个代码模板如下所示:
Gii是高度可配置的。你可以设置它只从一个特定的环境加载。简单的编辑web配置文件如下: 1 2 3 4 5 6 7 | if (YII_ENV_DEV) {
$config [ 'modules' ][ 'gii' ] = [
'class' => 'yii\gii\Module' ,
'allowedIPs' => [ '127.0.0.1' , '::1' ]
]
}
|
这确保了Gii只有设置了Yii的环境变量为(development)开发环境时才加载,并且只在通过本地环境访问的时候加载。
现在,让我们来看看模型的生成:

表格名称使用了一个响应敲击就会显示的小窗口来尝试给出对你的模型将会关联的表格的猜测, 并且所有的域值输入框都会有一个翻转效果显示出来的提示,提醒你如何完成对它们的填写. 你可以在让Gii输出代码之前先进行一下预览, 而所有的代码模板都是完全可定制的.
也有几个可以用于数据库迁移、消息翻译(I18N)以及生成用于自动化测试数据库道具的命令行辅助工具. 例如,你可以使用如下代码创建一个新的数据库迁移 文件: 1 | yii migrate/create create_user_table
|
这将会在 {应用目录}/migrations 创建一个新的看起来像下面这样的迁移模板: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php
use yii\db\Schema;
class m140924_153425_create_user_table extends \yii\db\Migration
{
public function up()
{
}
public function down()
{
echo "m140924_153425_create_user_table cannot be reverted.\n" ;
return false;
}
}
|
如此假如说我想要想这个表添加一些列. 我就只要简单的将下面的代码添加到 up 方法中: 1 2 3 4 5 6 7 8 | public function up()
{
$this ->createTable( 'user' , [
'id' => Schema::TYPE_PK,
'username' => Schema::TYPE_STRING . ' NOT NULL' ,
'password_hash' => Schema:: TYPE_STRING . ' NOT NULL'
], null);
}
|
然后为了确保我可以进行迁移的逆向操作,我就会编辑down方法: 1 2 3 4 | public function down()
{
$this ->dropTable( 'user' );
}
|
创建表格可能就是简单的设计到在命令行上运行一个命令:
而删除表格是下面的这个命令:
7. 很容易通过调整获得更好的性能
所有人都知道一个慢吞吞的网站会造就许多心怀不满的用户, 因此Yii为你提供了一些工具来帮助你让应用程序获得更快的速度.
所有的Yii缓存组件都扩展自 yii/caching/Cache, 它能让你在使用一个公共API的同时选择任意某一个缓存系统. 你甚至可以同时注册多个高速缓存组件. Yii 当前支持数据库和文件系统缓存, 还有 APC, Memcache, Redis, WinCache, XCache 以及 Zend Data Cache.
默认情况下,如果你是使用的 Active Record ,那么 Yii 会额外运行一个查询来确定生成你模型的表的结构. 你可以通过像下面这样编辑你的主配置文件,对你的应用程序进行设置,以缓存这些表结构: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | return [
'components' => [
'db' => [
'enableSchemaCache' => true,
'schemaCacheDuration' => 3600,
'schemaCache' => 'cache' ,
],
'cache' => [
'class' => 'yii\caching\FileCache' ,
],
],
];
|
最后,Yii有一个命令行工具可以便于对前端字段进行缩小化. 简单地运行下面的命令就可以生成一个配置模板: 1 | ./yii asset/template config.php
|
然后编辑该配置,指定你想要用那些工具来执行缩小化操作(比如. Closure Compiler, YUI Compressor, 或者 UglifyJS). 生成的配置模板如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php
return [
'jsCompressor' => 'java -jar compiler.jar --js {from} --js_output_file {to}' ,
'cssCompressor' => 'java -jar yuicompressor.jar --type css {from} -o {to}' ,
'bundles' => [
],
'targets' => [
'app\config\AllAsset' => [
'basePath' => 'path/to/web' ,
'baseUrl' => '' ,
'js' => 'js/all-{hash}.js' ,
'css' => 'css/all-{hash}.css' ,
],
],
'assetManager' => [
'basePath' => __DIR__,
'baseUrl' => '' ,
],
];
|
接下来,运行这个控制台命令以执行压缩. 1 | yii asset config.php /app/assets_compressed.php
|
最后,修改你的web应用程序配置文件,使用压缩后的资源. 1 2 3 4 5 6 | 'components' => [
'assetManager' => [
'bundles' => require '/app/assets_compressed.php'
]
]
|
注意: 你需要手动下载并安装这些额外的工具.
总结 跟任何好的框架类似,Yii可以帮助你快速的创建现代的web应用程序,并确保它们表现的良好. 它能通过为你代劳一些体力活,来促使你创建安全并且可测试的网站. 你可以简单的使用到他们所提供的大多数特性,或者你也可以修改它们以适应你自己的需要. 我真心鼓励你在你的下一个web项目中能试上它一试!
你尝试过 Yii 2 么? 你将会尝试它么? 让我们了解下吧!
|