æ©å±æ¯ä¸é¨è®¾è®¡çå¨ Yii åºç¨ä¸éæ¶å¯æ¿æ¥ä½¿ç¨çï¼ å¹¶å¯éåå¸ç软件å ãä¾å¦ï¼ yiisoft/yii2-debug æ©å±å¨ä½ çåºç¨çæ¯ä¸ªé¡µé¢åºé¨æ·»å ä¸ä¸ªæ¹ä¾¿ç¨äºè°è¯çå·¥å ·æ ï¼ å¸®å©ä½ ç®åå°æå页é¢çæçæ åµã ä½ å¯ä»¥ä½¿ç¨æ©å±æ¥å éä½ çå¼åè¿ç¨ã
ä¿¡æ¯ï¼ æ¬æä¸æ们使ç¨çæ¯è¯ "æ©å±" ç¹æ Yii 软件å ãèç¨æ¯è¯ "软件å " å "åº" æ代é Yii ä¸ç¨çé常æä¹ä¸ç软件å ã
è¦ä½¿ç¨æ©å±ï¼ä½ è¦å å®è£ å®ã大å¤æ°æ©å±ä»¥ Composer 软件å çå½¢å¼åå¸ï¼ è¿æ ·çæ©å±å¯éåä¸è¿°ä¸¤ä¸ªæ¥éª¤æ¥å®è£ ï¼
composer.json
æ件ï¼ææä½ è¦å®è£
çæ¯åªä¸ªæ©å± ï¼Composer 软件å
ï¼ãcomposer install
æ¥å®è£
æå®çæ©å±ã注æå¦æä½ è¿æ²¡æå®è£ Composer ï¼ä½ éè¦å å®è£ ã
é»è®¤æ åµï¼Composerå®è£ çæ¯å¨ Packagist ä¸ æ³¨åç软件å - æ大çå¼æº Composer 代ç åºãä½ å¯ä»¥å¨ Packageist ä¸æ¥æ¾æ©å±ã ä½ ä¹å¯ä»¥ åå»ºä½ èªå·±ç代ç åº ç¶åé ç½® Composer æ¥ä½¿ç¨å®ã å¦ææ¯å¨å¼åç§æçæ©å±ï¼å¹¶ä¸æ³åªå¨ä½ çå ¶ä»å·¥ç¨ä¸å ±äº«æ¶ï¼è¿æ ·åæ¯å¾æç¨çã
éè¿ Composer å®è£
çæ©å±ä¼åæ¾å¨ BasePath/vendor
ç®å½ä¸ï¼è¿éç BasePath
æä½ çåºç¨ç base pathãå 为 Composer è¿æ¯ä¸ä¸ªä¾èµç®¡çå¨ï¼å½å®å®è£
ä¸ä¸ªå
æ¶ï¼
ä¹å°å®è£
è¿ä¸ªå
æä¾èµçææ软件å
ã
ä¾å¦æ³å®è£
yiisoft/yii2-imagine
æ©å±ï¼å¯æå¦ä¸ç¤ºä¾ä¿®æ¹ä½ ç composer.json
æ件ï¼
{
// ...
"require": {
// ... other dependencies
"yiisoft/yii2-imagine": "~2.0.0"
}
}
å®è£
å®æåï¼ä½ åºè¯¥è½å¨ BasePath/vendor
ç®å½ä¸è§å° yiisoft/yii2-imagine
ç®å½ãä½ ä¹åºè¯¥
è§å°å¦ä¸ä¸ª imagine/imagine
ç®å½ï¼å¨å
¶ä¸å®è£
äºæä¾èµçå
ã
ä¿¡æ¯ï¼
yiisoft/yii2-imagine
æ¯ Yii ç±å¼åå¢éç»´æ¤ä¸ä¸ªæ ¸å¿æ©å±ï¼ æææ ¸å¿æ©å±åç± Packagist éä¸ç®¡çï¼å½å为yiisoft/yii2-xyz
ï¼å ¶ä¸çxyz
ï¼ ä¸åæ©å±æä¸åå称ã
ç°å¨ä½ å¯ä»¥ä½¿ç¨å®è£
好çæ©å±äºï¼å¥½æ¯æ¯åºç¨çä¸é¨åãå¦ä¸ç¤ºä¾å±ç¤ºäºå¦ä½ä½¿ç¨ yiisoft/yii2-imagine
æ©å±
æä¾ç yii\imagine\Image
ç±»ï¼
use Yii;
use yii\imagine\Image;
// generate a thumbnail image
Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)
->save(Yii::getAlias('@runtime/thumb-test-image.jpg'), ['quality' => 50]);
ä¿¡æ¯ï¼ æ©å±ç±»ç± Yii class autoloader èªå¨å è½½ã
å¨æå°æ åµä¸ï¼ä½ å¯è½éè¦æå¨å®è£ ä¸é¨åæè å ¨é¨æ©å±ï¼èä¸æ¯ä¾èµ Composerã æ³åå°è¿ä¸ç¹ï¼ä½ åºå½ï¼
vendor
ç®å½ãå¦ææ©å±æ²¡ææä¾ç±»çèªå¨å è½½å¨ï¼ä½ä¹éµå¾ªäº PSR-4 standard
æ åï¼é£ä¹ä½ å¯ä»¥ä½¿ç¨ Yii æä¾çç±»èªå¨å è½½å¨æ¥å è½½æ©å±ç±»ã
ä½ éè¦åçä»
ä»
æ¯ä¸ºæ©å±çæ ¹ç®å½å£°æä¸ä¸ª root aliasã
ä¾å¦ï¼åè®¾å¨ vendor/mycompany/myext
ç®å½ä¸å®è£
äºä¸ä¸ªæ©å±ï¼å¹¶ä¸æ©å±ç±»çå½å空é´ä¸º myext
ï¼
é£ä¹ä½ å¯ä»¥å¨åºç¨é
ç½®æ件ä¸å
å«å¦ä¸ä»£ç ï¼
[
'aliases' => [
'@myext' => '@vendor/mycompany/myext',
],
]
å¨ä½ éè¦å°ä½ çæ°ä½å享ç»å ¶ä»äººçæ¶åï¼ä½ å¯è½ä¼èèå建ä¸ä¸ªæ©å±ã æ©å±å¯å æ¬ä»»ä½ä½ å欢ç代ç ï¼ä¾å¦å©æç±»ãæ件ã模åï¼ççã
å»ºè®®ä½ æç § Composer package çæ¡æ¬¾å建æ©å±ï¼ä»¥ä¾¿å ¶ä»äººæ´å®¹æå®è£ å使ç¨ã å°±åä¸é¢çç« è讲述çé£æ ·ã
以ä¸æ¯å°æ©å±å建为ä¸ä¸ª Composer 软件å çééµå¾ªçåºæ¬æ¥éª¤ã
composer.json
çæ件ã
详æ
请åèåé¢çç« èã composer.json
¶æ¯ä¸ª Composer 软件å
å¨æ ¹ç®å½é½å¿
é¡»æä¸ä¸ª composer.json
æ件ã该æ件å
å«è½¯ä»¶å
çå
æ°æ®ã
ä½ å¯ä»¥å¨ Composeræå ä¸æ¾å°å®æ´å
³äºè¯¥æ件çè§æ ¼ã
以ä¸ä¾åå±ç¤ºäº yiisoft/yii2-imagine
æ©å±ç composer.json
æ件ã
{
// package name
"name": "yiisoft/yii2-imagine",
// package type
"type": "yii2-extension",
"description": "The Imagine integration for the Yii framework",
"keywords": ["yii2", "imagine", "image", "helper"],
"license": "BSD-3-Clause",
"support": {
"issues": "https://github.com/yiisoft/yii2/issues?labels=ext%3Aimagine",
"forum": "http://www.yiiframework.com/forum/",
"wiki": "http://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii",
"source": "https://github.com/yiisoft/yii2"
},
"authors": [
{
"name": "Antonio Ramirez",
"email": "amigo.cobos@gmail.com"
}
],
// package dependencies
"require": {
"yiisoft/yii2": "~2.0.0",
"imagine/imagine": "v0.5.0"
},
// class autoloading specs
"autoload": {
"psr-4": {
"yii\\imagine\\": ""
}
}
}
æ¯ä¸ª Composer 软件å
é½åºå½æä¸ä¸ªå¯ä¸çå
å以便è½ä»å
¶ä»ç软件å
ä¸è¯å«åºæ¥ã
å
åçæ ¼å¼ä¸º vendorName/projectName
ãä¾å¦å¨å
å yiisoft/yii2-imagine
ä¸ï¼vendor åå project ååå«æ¯
yiisoft
å yii2-imagine
ã
ä¸è¦ç¨ yiisoft
ä½ä¸ºä½ ç vendor åï¼ç±äºå®è¢« Yii çæ ¸å¿ä»£ç é¢ç使ç¨äºã
æ们æ¨èä½ ç¨ yii2-
ä½ä¸ºä½ çå
åçåç¼ï¼è¡¨ç¤ºå®æ¯ Yii 2 çæ©å±ï¼ä¾å¦ï¼myname/yii2-mywidget
ã
è¿æ´ä¾¿äºç¨æ·è¾¨å«æ¯å¦æ¯ Yii 2 çæ©å±ã
å°ä½ çæ©å±ææ为 yii2-extension
ç±»åå¾éè¦ï¼ä»¥ä¾¿å®è£
çæ¶å
è½è¢«è¯å«åºæ¯ä¸ä¸ª Yii æ©å±ã
å½ç¨æ·è¿è¡ composer install
å®è£
ä¸ä¸ªæ©å±æ¶ï¼ vendor/yiisoft/extensions.php
æ件ä¼è¢«èªå¨æ´æ°ä½¿ä¹å
å«æ°æ©å±çä¿¡æ¯ãä»è¯¥æ件ä¸ï¼ Yii åºç¨ç¨åºå°±è½ç¥éå®è£
äº
åªäºæ©å± (è¿äºä¿¡æ¯å¯éè¿ yii\base\Application::$extensions 访é®)ã
ä½ çæ©å±ä¾èµäº Yii ï¼çæå½ç¶ï¼ãå æ¤ä½ åºå½å¨ composer.json
æ件ä¸ååºå®
(yiisoft/yii2
)ãå¦æä½ çæ©å±è¿ä¾èµå
¶ä»çæ©å±æè
æ¯ç¬¬ä¸æ¹åºï¼ä½ ä¹è¦ä¸å¹¶ååºæ¥ã
ç¡®å®ä½ ä¹ä¸ºæ¯ä¸ä¸ªä¾èµçå
ååºäºéå½ççæ¬çº¦ææ¡ä»¶ (æ¯å¦ 1.*
, @stable
) ã
å½ä½ åå¸ä¸ä¸ªç¨³å®çæ¬æ¶ï¼ä½ æä¾èµçå
ä¹åºå½ä½¿ç¨ç¨³å®çæ¬ã
大å¤æ° JavaScript/CSS å
æ¯ç¨ Bower æ¥ç®¡ççï¼èé Composerãä½ å¯ä½¿ç¨
Composer asset æ件 使ä¹å¯ä»¥
éè¿ Composer æ¥ç®¡çè¿ç±»å
ãå¦æä½ çæ©å±ä¾èµ Bower 软件å
ï¼ä½ å¯ä»¥å¦ä¸ä¾æ示é£æ ·ç®åå°
å¨ composer.json
æ件çä¾èµä¸ååºå®ã
{
// package dependencies
"require": {
"bower-asset/jquery": ">=1.11.*"
}
}
ä¸è¿°ä»£ç 表æ该æ©å±ä¾èµäº jquery
Bower å
ãä¸è¬æ¥è¯´ï¼ä½ å¯ä»¥å¨ composer.json
ä¸ç¨ bower-asset/PackageName
æå® Bower å
ï¼ç¨ npm-asset/PackageName
æå® NPM å
ã
å½ Compower å®è£
Bower å NPM 软件å
æ¶ï¼å
çå
容é»è®¤ä¼åå«å®è£
å° @vendor/bower/PackageName
å @vendor/npm/Packages
ä¸ãè¿ä¸¤ä¸ªç®å½è¿å¯ä»¥åå«ç¨ @bower/PackageName
å @npm/PackageName
å«åæåã
å ³äº asset 管çç详ç»æ åµï¼è¯·åç § Assets ç« èã
ä¸ºä½¿ä½ çç±»è½å¤è¢« Yii çç±»èªå¨å è½½å¨æè
Composer çç±»èªå¨å è½½å¨èªå¨å è½½ï¼ä½ åºå½å¨
composer.json
ä¸æå® autoload
æ¡ç®ï¼å¦ä¸æ示ï¼
{
// ....
"autoload": {
"psr-4": {
"yii\\imagine\\": ""
}
}
}
ä½ å¯ä»¥ååºä¸ä¸ªæè å¤ä¸ªæ ¹å½å空é´åå®ä»¬çæ件ç®å½ã
å½æ©å±å®è£
å°åºç¨ä¸åï¼Yii å°ä¸ºæ¯ä¸ªæååºæ ¹å½å空é´å建ä¸ä¸ª
å«å æåå½å空é´å¯¹åºçç®å½ã
ä¾å¦ï¼ä¸è¿°ç autoload
æ¡ç®å£°æå°å¯¹åºäºå«å @yii/imagine
ã
æ©å±æå³çä¼è¢«å ¶ä»äººä½¿ç¨ï¼ä½ å¨å¼åä¸é常éè¦é¢å¤çä»åºã ä¸é¢æ们ä»ç»ä¸äºéç¨çåæ¨èçåæ³ï¼ä»¥å建é«åè´¨çæ©å±ã
为é¿å å²çªä»¥åä½¿ä½ çæ©å±ä¸çç±»è½è¢«èªå¨å è½½ï¼ä½ çç±»åºå½ä½¿ç¨å½å空é´ï¼ 并使类çå½å符å PSR-4 standard æè PSR-0 standard æ åã
ä½ çç±»çå½å空é´åºä»¥ vendorName\extensionName
èµ·å§ï¼å
¶ä¸ extensionName
å项ç®åç¸åï¼é¤äºå®æ²¡æ yii2-
åç¼å¤ãä¾å¦ï¼å¯¹ yiisoft/yii2-imagine
æ©å±
æ¥è¯´ï¼æä»¬ç¨ yii\imagine
ä½ä¸ºå®çç±»çå½å空é´ã
ä¸è¦ä½¿ç¨ yii
ãyii2
æè
yiisoft
ä½ä¸ºä½ ç vendor åãè¿äºåç§°å·²ç± Yii å
æ ¸ä»£ç é¢ç使ç¨äºã
ææ¶åï¼ä½ å¯è½æ³è®©ä½ çæ©å±å¨åºç¨ç èªä¸¾è¿ç¨ ä¸æ§è¡ä¸äºä»£ç ã
ä¾å¦ï¼ä½ çæ©å±å¯è½æ³ååºåºç¨ç beginRequest
äºä»¶ï¼åä¸äºç¯å¢ç设置工ä½ã
è½ç¶ä½ å¯ä»¥æ导æ©å±ç使ç¨è
æ¾å¼å°å°ä½ çæ©å±ä¸çäºä»¶å¥æéå ï¼ç»å®ï¼å° beginRequest
äºä»¶ï¼
ä½æ¯æ´å¥½çæ¹æ³æ¯èªå¨å®æã
为å®ç°è¯¥ç®æ ï¼ä½ å¯ä»¥å建ä¸ä¸ªæè° bootstrapping class ï¼èªä¸¾ç±»ï¼å®ç° yii\base\BootstrapInterface æ¥å£ã ä¾å¦ï¼
namespace myname\mywidget;
use yii\base\BootstrapInterface;
use yii\base\Application;
class MyBootstrapClass implements BootstrapInterface
{
public function bootstrap($app)
{
$app->on(Application::EVENT_BEFORE_REQUEST, function () {
// do something here
});
}
}
ç¶åä½ å°è¿ä¸ªç±»å¨ composer.json
æ件ä¸ååºæ¥ï¼å¦ä¸æ示ï¼
{
// ...
"extra": {
"bootstrap": "myname\\mywidget\\MyBootstrapClass"
}
}
å½è¿ä¸ªæ©å±å®è£ å°åºç¨åï¼Yii å°å¨æ¯ä¸ä¸ªè¯·æ±çèªä¸¾è¿ç¨ä¸ èªå¨å®ä¾åèªä¸¾ç±»å¹¶è°ç¨å ¶ bootstrap() æ¹æ³ã
ä½ çæ©å±å¯è½è¦ååæ°æ®åºãä¸è¦å设使ç¨ä½ çæ©å±çåºç¨æ»æ¯ç¨
Yii::$db
ä½ä¸ºæ°æ®åºè¿æ¥ãä½ åºå½å¨éè¦è®¿é®æ°æ®åºçç±»ä¸ç³æä¸ä¸ª db
å±æ§ã
è¿ä¸ªå±æ§å
è®¸ä½ çæ©å±çç¨æ·å¯å®å¶ä½ çæ©å±ä½¿ç¨åªä¸ª DB è¿æ¥ãä¾å¦ï¼
ä½ å¯ä»¥åè yii\caching\DbCache ç±»çä¸ä¸å®æ¯å¦ä½ç³æåä½¿ç¨ db
å±æ§çã
å¦æä½ çæ©å±éè¦å建ç¹å®çæ°æ®åºè¡¨ï¼æè ä¿®æ¹æ°æ®åºç»æï¼ä½ åºå½
å¦æä½ çæ©å±æ¯æ件æè 模åç±»åï¼å®æå¯è½éè¦ä½¿ç¨ä¸äº assets ã ä¾å¦ï¼ä¸ä¸ªæ¨¡åå¯è½è¦æ¾ç¤ºä¸äºå å«å¾çï¼JavaScript å CSS ç页é¢ãå 为æ©å±çæ件 é½æ¯æ¾å¨åä¸ä¸ªç®å½ä¹ä¸ï¼å®è£ ä¹å Web æ æ³è¯»åï¼ä½ æ两个éæ©ä½¿å¾è¿äº asset æ件ç®å½ å¯ä»¥éè¿ Web 读åï¼
æ们æ¨èä½ ä½¿ç¨ç¬¬äºç§æ¹æ³ï¼ä»¥ä¾¿å ¶ä»äººè½æ´å®¹æ使ç¨ä½ çæ©å±ã æ´è¯¦ç»çå ³äºå¦ä½å¤ç assets ï¼è¯·åç § Assets ç« èã
ä½ çæ©å±å¯è½ä¼å¨æ¯æä¸åè¯è¨çåºç¨ä¸ä½¿ç¨ï¼å æ¤ï¼å¦æä½ çæ©å±è¦æ¾ç¤ºå 容ç»ç»ç«¯ç¨æ·ï¼ ä½ åºå½è¯çå®ç° å½é ååæ¬å°åï¼ç¹å«å°ï¼
Yii::t()
å
è£
èµ·æ¥ï¼ä»¥ä¾¿å¯ä»¥è¿è¡ç¿»è¯ã
åªç»å¼åè
åèçä¿¡æ¯ï¼å¦å
é¨å¼å¸¸ä¿¡æ¯ï¼ä¸éè¦åç¿»è¯ãæ´è¯¦ç»çä¿¡æ¯ï¼è¯·åç § Internationalization ç« èã
ä½ ä¸å®æ³è®©ä½ çæ©å±å¯ä»¥æ æå°è¿è¡èä¸ä¼ç»å ¶ä»äººå¸¦æ¥é®é¢å麻ç¦ã为达å°è¿ä¸ªç®çï¼ ä½ åºå½å¨å ¬å¼åå¸ååæµè¯ã
æ¨èä½ å建æµè¯ç¨ä¾ï¼åå ¨é¢è¦ççæµè¯ä½ çæ©å±ï¼èä¸åªæ¯ä¾èµäºæå¨æµè¯ã æ¯æ¬¡åå¸æ°çæ¬åï¼ä½ åªè¦ç®åå°è¿è¡è¿äºæµè¯ç¨ä¾ç¡®ä¿ä¸åå®å¥½ã Yii æä¾äºæµè¯æ¯æï¼ä½¿ä½ æ´å®¹æååå æµè¯ãéªæ¶æµè¯ååè½æµè¯ã 详æ 请åç § Testing ç« èã
ä½ åºè¯¥ä¸ºæ¯ä¸ä¸ªæ©å±å®ä¸ä¸ªçæ¬å·ï¼å¦ 1.0.1
ï¼ãæ们æ¨èä½ å½åçæ¬å·æ¶åç
§
semantic versioning å³å®ç¨ä»ä¹æ ·ççæ¬å·ã
ä¸ºä½¿å ¶ä»äººç¥éä½ çæ©å±ï¼ä½ åºè¯¥å ¬å¼åå¸ã
å¦æä½ é¦æ¬¡åå¸ä¸ä¸ªæ©å±ï¼ä½ åºè¯¥å¨ Composer 代ç åºä¸æ³¨åå®ï¼ä¾å¦
Packagistãä¹åï¼ä½ æéè¦åçä»
ä»
æ¯å¨
çæ¬ç®¡çåºä¸å建ä¸ä¸ª tag ï¼å¦v1.0.1
ï¼ï¼ç¶åéç¥ Composer 代ç åºã
å
¶ä»äººå°±è½æ¥æ¾å°è¿ä¸ªæ°çåå¸äºï¼å¹¶å¯éè¿ Composer 代ç åºå®è£
åæ´æ°è¯¥æ©å±ã
å¨åå¸ä½ çæ©å±æ¶ï¼é¤äºä»£ç æ件ï¼ä½ è¿åºè¯¥èèå å«å¦ä¸å 容 帮å©å ¶ä»äººäºè§£å使ç¨ä½ çæ©å±ï¼
readme.md
ãchangelog.md
ãchangelog.md
ãä¿¡æ¯ï¼ ä½ ç代ç 注éå¯ä»¥åæ Markdown æ ¼å¼ã
yiisoft/yii2-apidoc
æ©å±ä¸ºä½ æä¾äºä¸ä¸ªä»ä½ ç 代ç 注éçææ¼äº®ç API ææ¡£ã
ä¿¡æ¯ï¼ è½ç¶ä¸åè¦æ±ï¼æ们è¿æ¯å»ºè®®ä½ çæ©å±éµå¾ªæ个ç¼ç è§èã ä½ å¯ä»¥åç § core framework code styleã
Yii æä¾äºä¸åæ ¸å¿æ©å±ï¼ç± Yii å¼åå¢éå¼ååç»´æ¤ãè¿äºæ©å±å ¨é½å¨ Packagist ä¸æ³¨åï¼å¹¶å Using Extensions ç« èæè¿° çé£æ ·å®¹æå®è£ ã
以ä¸å®æ¹æ©å±éç¨äº Yii 2.1 å以ä¸çæ¬ã æ¨ä¸éè¦ä¸º Yii 2.0 å®è£ å®ä»¬ï¼å 为å®ä»¬å å«å¨æ ¸å¿æ¡æ¶ä¸ã
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.