YiiFramework
一、关于yii
名字:英文名是yiiframework,中文名叫“易框架”
创始人:薛强
生日:2008年1月1日
github地址:https://github.com/yiisoft/yii2,目前版本为2.0.8
官方网站:http://www.yiiframework.com/
php版本要求:>=php5.4
优点:面向对象,mvc,惰性加载,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,主题化,I18N和L10N,Migration,gii,与jQuery整合,安全,错误处理和日志记录,扩展库,详细的文档
注解:
惰性加载
Yii如此快速是因为它广泛地使用lazyloading技术。比如,直到第一次使用到这个类,才会包含进来;直到对象第一次访问,才会创造这个对象。
性能对比
Yii是一个高性能的框架,以下的图表展示了与其他流行的PHP框架比较下Yii的高效率。在这个图表中,RPS代表“每秒请求”,描述了此框架每秒执行多少个请求。这个数字越大,此框架的性能越高,我们可以看到,在这个比较中 Yii胜过其他框架。
DAO
DAO(Data Access Object)是一个数据访问接口,主要功能:1.DAO用来封装DataSource的..就比如,Connectionconn = DAOFactory.createConnection().. 2.DAO也是把对数据库的操作(比如最基本的CRUD操作)全部封装在里面..
Active Record
Active Record则是随着rubyon rails的流行而火起来的一种ORM模式,它是把负责持久化的代码也集成到数据对象中,即这个数据对象知道怎样把自己存到数据库里。
ActiveRecord的主要思想是:
1.每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field;
2.ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD;
3. ActiveRecord是一种领域模型(DomainModel),封装了部分业务逻辑;
ActiveRecord比较适用于:
1.业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时,ActiveRecord是非常方便的,即你的业务逻辑大多数是对单表操作;
2.当发生跨表的操作时,往往会配合使用事务脚本(TransactionScript),把跨表事务提升到事务脚本中;
3. ActiveRecord最大优点是简单,直观。一个类就包括了数据访问和业务逻辑.如果配合代码生成器使用就更方便了;
这些优点使ActiveRecord特别适合WEB快速开发。
Widgets
小物件,比如表单小物件,
I18n
i18n(其来源是英文单词internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。对程序来说,指在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面。
L10n
L10N 是localization的缩写形式,意即在l和n之间有10个字母,本意是指软件的“本地化”。指把软件界面和文档翻译成不同国家、地区的语言版本
Migration
在开发和维护一个数据库驱动的应用程序时,数据库的结构会随代码的改变而改变。例如,在开发应用程序的过程中,会增加一张新表且必须得加进来;在应用程序被部署到生产环境后,需要建立一个索引来提高查询的性能等等。因为一个数据库结构发生改变的时候源代码也经常会需要做出改变,Yii提供了一个 数据库迁移 功能,该功能可以记录数据库的变化,以便使数据库和源代码一起受版本控制。
Gii
代码自动生成工具
二、开始我们的yii2之旅
1.怎么安装yii2?
2.环境要求是什么?
3.yii2的目录结构是怎样的,每个目录中放了什么文件?
4.怎么配置yii2?
5.如何初始化yii2?
6.怎么自动生成代码?
7.mvc是什么?
8.怎么写数据库查询语句?
9.怎么配置缓存?
10.i18n怎么配置?
11.怎么安装第三方扩展?
12.怎么卸载第三方扩展?
13.怎么升级yii框架?
1.怎么安装yii2?
(1)通过composer安装
Composer是PHP的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。如果你的电脑还没有安装composer,你可以通过下面的命令安装
curl-sS https://getcomposer.org/installer | php mv composer.phar/usr/local/bin/composer
composerself-update
composerglobal require "fxp/composer-asset-plugin:^1.2.0"
接下来执行下面两行命令来安装yii
安装基本版
composercreate-project yiisoft/yii2-app-basic basic 2.0.8
安装高级版
composercreate-project yiisoft/yii2-app-advanced advanced 2.0.8
(2)通过存档文件安装
去github下载zip文件,然后解压到web服务器的网页根目录就可以了
2.环境要求是什么?
php版本的要求是需要>=php5.4,更多的请访问框架根目录下面的requirements.php
http://localhost/website/requirements.php
3.yii2的目录结构是怎样的,每个目录中放了什么文件?
backend后台目录
common/config公用配置文件目录
common/mail邮件配置
console关于命令行的,我也没有用过
environments/dev开发环境配置
environments/prod生产环境配置
frontend前台目录
tests测试文件,对写好的项目进行测试
vendor第三方类库
4.怎么配置yii2?
在environments目录进行开发环境和生产环境的配置
5.如何初始化yii2?
首先在environments目录中进行配置,然后在根目录下面运行./init
6.怎么自动生成代码?
在前台应用或者后台应用中访问gii控制器
7.mvc是什么?
model:和数据库进行交互,
view:视图,展示页面
controller:控制器将从model中获取的数据发送到相关视图
8.怎么写数据库查询语句?
查询:
// find the customers whose primary key value is 10
$customers = Customer::findAll(10);
$customer = Customer::findOne(10);
// the above code is equivalent to:
$customers = Customer::find()->where(['id' => 10])->all();
// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findAll([10, 11, 12]);
$customers = Customer::find()->where(['IN','id',[10,11,12]])->all();
// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();
// find customers whose age is 30 and whose status is 1
$customers = Customer::findAll(['age' => 30, 'status' => 1]);
// the above code is equivalent to:
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();
// use params binding
$customers = Customer::find()->where('age=:age AND status=:status')->addParams([':age'=>30,':status'=>1])->all();
// use index
$customers = Customer::find()->indexBy('id')->where(['age' => 30, 'status' => 1])->all();
// get customers count
$count = Customer::find()->where(['age' => 30, 'status' => 1])->count();
// add addition condition
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->andWhere('score > 100')->orderBy('id DESC')->offset(5)->limit(10)->all();
// find by sql
$customers = Customer::findBySql('SELECT * FROM customer WHERE age=30 AND status=1 AND score>100 ORDER BY id DESC LIMIT 5,10')->all();
// update status for customer-10
$customer = Customer::findOne(10);
$customer->status = 1;
$customer->update();
// the above code is equivalent to:
Customer::updateAll(['status' => 1], 'id = :id',[':id'=>10]);
删除:
// delete customer-10
Customer::findOne(10)->delete();
// the above code is equivalent to:
Customer::deleteAll(['status' => 1], 'id = :id',[':id'=>10]);
9.yii中可以使用什么缓存?
Yii 提供了多种缓存组件以用于保存数据到不同的媒介中。下面是可用缓存组件一览:
yii\caching\ApcCache: 使用PHP APC 扩展。对于集中式应用(如只有一个服务器,没有专门的负载均衡),这被认为是性能最好的缓存选项。
yii\caching\DbCache: 使用数据库来保存缓存数据。缺省情况下,将在运行时目录下创建和使用一个 SQLite3 数据库。你可以通过设置它的 db 属性来显式指定一个数据库。
yii\caching\DummyCache: 代表一个空缓存。这主要用来简化那些需要检查缓存是否可用的代码。比如在开发过程中或者服务器没有可用的缓存,我们可以使用这个缓存组件。当真实的缓存部署好后,我们可以切换到相应的缓存上。两种情况下,我们可以使用同样的代码:Yii::$app->cache->get($key) 来尝试获取一个数据片段而无须担心 Yii::$app->cache 可能为 null。
yii\caching\FileCache: 文件缓存。这个很适合用来缓存大块数据(比如页面)。
yii\caching\MemCache: 使用PHP memcache 以及 memcached 扩展。对于分布式应用程序(多服务器,有负载均衡),这被认为是性能最好的选项。
yii\redis\Cache: 基于 Redis 键值存储实现了一个缓存组件 (支持 redis 版本 2.6.12 +)。
yii\caching\WinCache: 使用 PHP WinCache(参阅) 扩展。
yii\caching\XCache: 使用 PHP XCache 扩展。
Zend Data Cache 作为底层缓存媒介。
10.i18n怎么配置?
./yii message/config @app/config/i18n.php
设置源代码的路径和翻译文件的路径
__DIR__. DIRECTORY_SEPARATOR .'..',
// Root directory containing message translations.
'messagePath' => __DIR__ . DIRECTORY_SEPARATOR .'..'. DIRECTORY_SEPARATOR . 'messages',
// array, required, list of language codes that the extracted messages
// should be translated to. For example, ['zh-CN', 'de'].
'languages' => ['de','es','it','ja'],
// string, the name of the function for translating messages.
// Defaults to 'Yii::t'. This is used as a mark to find the messages to be
// translated. You may use a string for single function name or an array for
// multiple function names.
'translator' => 'Yii::t',
./yii message/extract @app/config/i18n.php
'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'language'=>'es', // spanish
'components' => [
composer require 2amigos/yii2-date-time-picker-widget:~1.0
composer remove 2amigos/yii2-date-time-picker-widget
13.怎么升级yii框架?
composer update