Yii Framework 2.0 ãªãªã¼ã¹è¨å¿µåå¼·ä¼ è³æ
第19åé¢è¥¿PHPåå¼·ä¼ Yii Framework 2.0 ãªãªã¼ã¹è¨å¿µåå¼·ä¼ ã®è³æã¯ãã¡ãã§ãã
ã ãã¶ãããæ°å³ãªã®ã¯ãä¸è¬å ¬éãæèããã«æ¸ãã¦ããããã§ãããã®å ´ã«ãã人åãã«ã仿¥ã¯ããããåå¼·ä¼ãªã®ã§ç©ºæ°èªãã§ããã¨ããã®ãå ¥ã£ã¦ããã®ããäºæ¿ãã ããã
Yii 2.0 ã¨ã¯
ãã¼ã¿ãªãªã¼ã¹è¨å¿µ 第ä¸ååå¼·ä¼ã®è³æ
https://gist.github.com/tanakahisateru/cf8ef578d7ea24ea429a â» ã¤ãã³ãã¾ããã§ã¡ãã£ã¨ãªã¹ã¹ã¡ãããªãæ¸ãæ¹ãããã¾ã
éå»ã®çºè¡¨ãããã°ãªã©
http://www.slideshare.net/tanakahisateru/phpcon-2014yii
http://image.slidesharecdn.com/yii-121012040114-phpapp01/95/yii-31-728.jpg?cb=1350032550
http://tanakahisateru.hatenablog.jp/entry/2014/06/16/040047
http://tanakahisateru.hatenablog.jp/entry/2013/12/22/030817
ã¦ã¼ã¶ã¼ã¬ã¤ã
http://www.yiiframework.com/doc-2.0/guide-README.html
Yii ã®ç«ã¡ä½ç½®
éçºè¦æ¨¡ã®æ³å®
- ã¨ã³ã¿ã¼ãã©ã¤ãº = Symfony, Zend
- RAD = CakePHP, Laravel, Yii
éçºã«å¿ è¦ãªåæç¥è
- ãªãã¸ã§ã¯ãæå = Symfony, Zend (SQL?), Yii
- è¦ç´ãã¼ã¹ = CakePHP, Laravel
Symfony ã¨ã®é¡ä¼¼ç¹
- é©åãªãªãã¸ã§ã¯ãæåãåæã«ãã¦ãã¦IDEãã¬ã³ããªã¼
- è¨å®ã®é ç®ããªãã¸ã§ã¯ãã®ããããã£ã¨å®å ¨ã«å¯¾å¿ãã
- ãããã°ãã¼ã«ãæ¨æºè£ å
- ã¢ã»ãããPHPã©ã¤ãã©ãªã®ããã±ã¼ã¸å ã§ç®¡çãWebã«ãããªãã·ã¥ãã¦ä½¿ã (Assetic, Laravelã®publishãä¼¼ã¦ã)
- POSTããã©ã¼ã ãªãã¸ã§ã¯ã ã§åãåãããªãã¼ã·ã§ã³ããè¨è¨ (Laravelã¯5ã§å ¥ããã)
Symfony ã«å¯¾ãã大ããªéã
- Symfonyã®ãããªãã«DIè¨è¨ãæåãããã°ãã¼ãã«ã«åç §ã§ãããµã¼ãã¹ãã±ã¼ã¿ã¼ãè¯ãã¨ãã
- Requestãç¬ç«ããã¤ã³ã¹ã¿ã³ã¹ã§ã¯ãªãã¢ããªã±ã¼ã·ã§ã³ã¤ã³ã¹ã¿ã³ã¹ã¨1:1ã«ãªã£ã¦ãã¦ããªã¯ã¨ã¹ããã¨ã«ã¡ã¢ãªãå ¨ç ´æ£ãããæåã«æé©åããã¦ãã
- ã¢ããã¼ã·ã§ã³çã®é«åº¦ãªè¨è¿°ãããã«é«åº¦ãªé«éåææ³ã§ä¸å¡ãããã®ã§ã¯ãªããé ããªããªãã¡ã«ããºã ãæ¨ã¦ãããã¾ã§ãããã®ã¾ã¾ã§éãããã¨ãæå
- ã¯ã©ã¹ãPOJO(?ãã¬ã¼ã ã¯ã¼ã¯ã®ç¥èã¨ç¬ç«ãããã¡ã¤ã³ã¢ãã«)ã§ãããã¨ã«ãã ãããªã
- ORMã®ã¤ã³ã¹ã¿ã³ã¹ããã©ã¼ã ãå ¼ä»»ã§ãã (Strutsåãªã®ãRails風ã«ãªã) = ActiveRecord
- DIãããªãã¨ä½ããªãå¶ç´æ (ã¨ã³ã¿ã¼ãã©ã¤ãºã§ã¯ä¸è«ãã䏿ããªãããã®å®å ¨çã¨ãã¦æå¹) ããªã
- ã¡ãã£ã¨ããã«ã¹ã¿ãã¤ãºãªãã¯ãã¼ã¸ã£ã§ãã£ã¨æ¸ã¾ãããã
ãã¤ã¦Symfonyãããã¦Yii2-alphaãæ¡ç¨ããçç±
Symfonyã§ã ãã¶ä½ã£ã¦ãããã®ããæ®ã2ã¶æã§Yii2(彿alpha)ã«å¤æ´ãã¦ã¤ãããä½ããªããããã¨ãããã¾ããã
- Doctrineã¯ããã·ãã¬ã³ã¼ãããã ã®å ¥ãç©ã§å°ããªãã¸ãã¯ãæã¦ãArrayãããããã¯SQLãå®è¡ã§ãã層ãè¦ããªããã¢ãã«ã®è¨è¨ãå¥éå¿ è¦ã ã£ãã
- èªåã§ èªç±ã« è¨è¨ããå¿ è¦ãããã¨ãããã¨ã¯ãå¼ãç¶ãã 人ã®OOè¨è¨åãåããããçä¼¼ããéå½¢ããã¬ã¼ã ã¯ã¼ã¯ããä¸ããããªã
- Twigã§åå©ç¨å¯è½ãªé¨åãæ¸ãã®ã大å¤ããã
- ãµã¼ããã¼ãã£ã¼è£½ã©ã¤ãã©ãªããªãã¨å¤ãã£ããã¨ãä½ãã§ããªãããã®é¸å®ã®è² æ ã大ãã
è¦ããã«ã¡ããã¨ãããã¨ããå ´åã®éçºã³ã¹ãã§ãã
ä»ã¨ç°ãªãç¹å¾´
åºæ¬
- ãã¹ã¦ã®ã³ã³ãã¼ãã³ããä¸è²«ãã¦ãgetter/setterãããã¤ãã¢ããµãã¼ãããåºåºã¯ã©ã¹ãç¶æ¿ãã¦ãã
- ååã«ããããããã£åç §ãæ´»ããã¦ãå®è£ ãpublicãã£ã¼ã«ããªã®ãgetterãªã®ãDBã®ã«ã©ã ãªã®ããåºå¥ããªã
- ã©ãã«ã§ãã¤ãã³ãã¨ããã¤ãã¢ãå·®ãè¾¼ãã
- ã¤ãã³ãããã¯ãå©ç¨ãã¦ããããªãã®ãã§ãã¦ãã
- ãã¹ã¦ã®ã³ã¼ããPHPã®ææ³ãYiiã®åºåºã¯ã©ã¹ã®ã«ã¼ã«ãç¥ãã°ããã ã => å¦ç¿ã³ã¹ãã®ä½ã
- ãã©ã¦ã¶ãã使ããã³ã¼ãçæãã¼ã«ãä¾¿å© = Gii
ãã¥ã¼
- ãã¥ã¼ãPHPã¹ã¯ãªããã§ããç©æ¥µçãªçç± = ã¦ã£ã¸ã§ãã
- ãã¬ã¼ã ã¯ã¼ã¯ã®ãµãã¼ãç¯å²ã«JavaScriptãå«ã (jQueryçããã³ãå´ã§å¿ è¦ãªã©ã¤ãã©ãªãåæã¤ã³ã¹ãã¼ã«/ããã±ã¼ã¸ãã¼ã¸ã§ã³ç®¡çä¸ã«)
- åé¤ã®ç¢ºèªãªã©ã§ç©æ¥µçã«JavaScriptã®confirm()ã使ããªã©
- ã¢ã»ãããã³ãã«ã«ããCSS/JSã®ä¾åé åºè§£æ±º
- ãããã
artisan xyz:publishããªãã¦ãèªåãããªãã·ã¥
ãã¼ã¸ã£ã¼ãã¬ã¼ã ã¯ã¼ã¯
- DataProvider (æªè©ä¾¡ã®Queryã®ã¤ã³ã¹ã¿ã³ã¹ã«orderã¨limitãããã¦ç¯å²å ã®ãã¼ã¿ãå¾ããªãã¸ã§ã¯ã)
- ListView (DataProviderããã¥ã¼ã§ã¤ãã¬ã¼ã·ã§ã³ããã¦ã£ã¸ã§ãã)
- ä»»æã®SearchForm (ãã£ã«ã¿æ¡ä»¶ãé ããDataProviderãçæ)
Laravelã¨ã®é¡ä¼¼ç¹ (yii2)
- ActiveRecordã¯Eloquentã¨ããªãä¼¼ã¦ãããã¯ã¨ãªã®ãããããªã¬ã¼ã·ã§ã³ã®ãããããå¾çºãªã®ã§ããã¡ããã¨ããè¨è¨ã«ãªã£ã¦ãã
- ä¸ççãªäººæ°ã¯åã¯ã©ã¹ (ã©ã£ã¡ãå¼·ããã¨ããããã¯ãä»ã®PHPã«ã©ããããã¼ãºãé«ãã)
Laravelã¨ã®ç¸éç¹
ã¾ãã¯ãã

â» Laravelã®Eloquentã¯ã³ã³ã¯ãªã¼ããªModelã¨Builderã®2ã¤ã§ã§ãã¦ãã¦ãçSQLç¨ã®Builderã¯ã¡ã½ããä½ç³»ãä¼¼ãå¥ã®å®è£ ã«ãªã£ã¦ãã¾ããã¤ã¾ããã®å³ã«å¯¾å¿ãããã¨é¢ä¿ç·ã®ãªãã¯ã©ã¹ã3ã¤ç»å ´ããã ãã
ã§ãçµæ
$firstAdminId = (new Query())->from('user')
->where(['admin' => true])->orderBy('create_time')
->select('id')->scalar();
ã¨ããã³ã¼ãã¨ã»ã¨ãã©ã®å é¨ããã¼ãå ±æãã¦ãã
$firstAdmin = User::find()->where(['admin' => true])->orderBy('create_time')->one();
ãåããActiveRecordã§ã®ã¤ãã³ã/ããã¤ãã¢ã¨ããªãã¼ã·ã§ã³ã¯ãComponentã¨Model(ãã©ã¼ã )ããç¶æ¿ãã¦ããã
ã§ãMongoDBã®ActiveRecordãã¾ã£ããåãç¶æ¿æ§é ããªã®ã§ãã®ãããã®ã¯ã¨ãªãªãã»ã¼åå空éãå¤ããã ãã§ MongoDB ã«åãæ¿ãããããããã§ã ãTrait ã¨Modelç¶æ¿ã®é¨åã¯å®è£ ãå ±æã§ãã¦ã¦ååãããã¯å®å ¨ã«åãåããããã
- ã¨ããããã«ãå ¨ä½çã«ä¸è²«ãããªãã¸ã§ã¯ãæåè¨è¨ãããã
- å é¨è¨è¨ã®è¿½è·¡ãããããã«ã¹ã¿ãã¤ãºããããã¯æ®µéãã
- ã©ã¤ããµã¤ã¯ã«ã¤ãã³ãã®ããããã¼ã¦ã§ã¤ããªMVCæ§é ã«è¦ãã¦ãå®ã¯Laravelãããéãããã£ãã·ã¥å¹çãé«ã(PHPã«ç´ ç´ãªãã¨ã¸ã®æ©æµ)
CakePHPã¨ã®é¡ä¼¼ç¹ (yii1,2)
- é©ç¨ããããã¸ã§ã¯ãè¦æ¨¡ãããã¨è¿ãå°è±¡
- ãã¼ã¿ãã¼ã¹ã®ç·¨éç»é¢ãæéã§ä½ããç³»
CakePHPã¨ã®ç¸é
- 1.1ã®é ãããã§ã«ActiveRecordãã ãã¶å è¡ãã¦ãã
- è¦ç´ãã¼ã¹ã§åãã¦ãªãã®ã§èªç±ãªè¨è¨ããããã
- OOPçã«ç´ ç´ã§å ¨ä½ã®ä¸è²«æ§ããã(ããã¤ãã¢ã®ãµãã¼ãã¯ããåºåºãªã¯ã©ã¹ã«ãã£ã¦ã©ãã§ã使ãã)
- ã¤ãã³ãã®ãããã§ç¡çãããã¡ããã³ã³ããã¼ã©ãé¿ãããã(çµé¨ä¸)
- ã¡ã¸ã£ã¼ãã¼ã¸ã§ã³ãä¸ããã¨ãã®ããªã·ã¼ = ä¸ä½äºæãªãã§ãããæ§ãã¼ã¸ã§ã³ãé·ããµãã¼ãããã°ãã
ç¹å¾´çãªã³ã³ã»ãã
- ã³ã¼ãããã£ãããããããã«é ããªããããªé¸æã¯ããªã (ããã°ã©ãã¼ã®æºè¶³ãæºãããããPHPã§é©åã«åãã³ã¼ãã¯ã©ãããã¨ããæè)
- ãã¾ã©ãã®PHPãçé¢ç®ã«ããã°éãã¯è½ã¡ãªãããã£ãããã¯çµæã¤ãã¦ãããã®
- ãã¬ã¼ã ã¯ã¼ã¯åºæãªè¨è¿°æ¹æ³ (Yamlã使ã£ããã¢ããã¼ã·ã§ã³ã使ã£ããè£ã¯ã¶ã¿ãããªArrayè¨æ³ã ã£ãã) ããªãã®ã§ãããããããèªåç¬èªã®ã«ã¹ã¿ãã¤ãºã容æ
- ã¨ã«ãããã®ãããã¢ããªã±ã¼ã·ã§ã³éçºè ç®ç·ãåã ã®é¨åãã©ãããä½¿ãæ¹ãã¦ãåãã¨ããå®å ¨æ§ãããç¾å ´ç®ç·ã§ããã¼èªåã ã£ããããå¤ããããããã«ãã¦ããã®ã«ãªããã¨æã£ãã¨ããã¯ãã ãããéçºè ã®èªå·±è²¬ä»»ã§å¤æ´ã§ããããã«ãã¦ããã
Railsã¨æ¯ã¹ã¦ä½ãè¯ãã â ãã®è¦ç¹ã§è¦ãã®ãé©å
- ãã£ã¨ãRailsã¨æ¯è¼ããããã¨ã®å¤ãPHPãã¬ã¼ã ã¯ã¼ã¯
- PHPã©ã³ã¿ã¤ã ã§åãã¨ãããã¨ãããã¯ã§ãã
- PhpStormã®PHPã¯å(docã³ã¡ã³ã)ã®ããLLãåçãããªãå®å¿æ
- requireã¨ãæé»ã§çã¾ãããªãã¸ã§ã¯ããããåå空éãuseããã¯ã©ã¹ãã¼ãã¼ã®ã»ãã好ã
- ActiveRecordã®ãã£ã¼ã«ãã¯ããã©ã«ãã§ãã¯ã¤ããªã¹ã (ããã©ã«ãã§Massive Assignmentãé²ãã)
- TurboLinkããCoffeeScriptããSassããHamlããããã¬ã¼ã ã¯ã¼ã¯ã®ä»äºã¯ãããããã¨ãããªãæ
- ã©ãã«ä½ãå ¥ã£ã¦ããã®ããåç´æè§£ã§ãèªåç¬èªãªããã¸ã§ã¯ãæ§æãä½ãããã
- çæ³ (çãåå¼ããªRubyã¨ãã¹ãã¼ããç¾å ´ã«å¸¸é§ãã¦ãããã¨ããä»®å®) ããç¾å® (æ®éã®äººããããã調ã¹ããã©ãã«ãåããã®ãä½ãããã¨) ãéè¦
Yii2ã§æ¡ç¨ãããæ°æè¡ãªã©
1 Composer
ãã¾ã©ãå½ããå㪠Composer ã«ããããã¸ã§ã¯ã使ã
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
yiisoft/yii2-app-basic 㯠Packagist ã®ç»é²åãå ¬éããã¦ããã°ã©ããªãã³ãã¬ã¼ãããã§ãçæå¯è½ã
ã£ã¦ã ããªããããã話ã§ãã¢ããªã±ã¼ã·ã§ã³æ§é ã¯PSR-4ã«æºæ ãã¦ãã¦åå空éã§æµ ããã£ã¬ã¯ããªããä»»æã®ã¯ã©ã¹ããªã¼ããã¼ãã
2 composer-asset-plugin
https://github.com/francoispluchino/composer-asset-plugin
BowerãNPMããããã±ã¼ã¸ãã¤ã³ã¹ãã¼ã«ã§ããComposeræ¡å¼µ
ã¤ã³ã¹ãã¼ã«
composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
vendorã®ä¸ã«ãã¦ã³ãã¼ããããYiiã®ã¢ã»ãããã³ãã«ã®æ©è½ã§åçã«webå ¬éå ´æã«ãããªãã·ã¥ããã¾ãã
3 Twitter Bootstrap
Bootstrap3 æ¡å¼µãæåããçµã¿è¾¼ã¿æ¸ã¿ã使ãã使ããªããã¯åå空éã§ä½¿ãåãã
yii\widgets\* â â yii\bootstrap\*
Bootstrapã使ããããªããã°åå空éãåãæ¿ããã(Bootstrapç¹æã®ãã®ã使ã£ã¦ããªãç®æãActiveFormãªã©) ããã§ã¦ã£ã¸ã§ãããåãHTMLã«bootstrapãªã¯ã©ã¹ãä»ãããä»ããªãã£ããã
4 SwiftMailer
SwiftMailerãBootstrapã®ããã«ä½¿ãåãå¯è½ãããã©ã«ãã¯çµã¿è¾¼ã¿æ¸ã¿ã
Transportå®è£ ãåãæ¿ãã¦ãSMTPãªã®ãAmazon SESã«å¯¾å¿ãããsendmailã«ãããã¨ãããªãã¸ãSwiftMailerã®ä¾¿å©ããæ´»ããã¤ã³ã¿ã¼ãã§ã¼ã¹è¨è¨ã«ãªã£ã¦ããã
useFileTransport (boolå)ã¨ããéçºç¨ã®ãã¹ã¿ã¼ã¹ã¤ããã便å©ã
ã¡ã¼ã«ãã³ãã¬ã¼ãã®ã¬ã³ãã©ã¼ãã¯ããããHTMLã¡ã¼ã«ãæ³å®ãã¦ããã
5 Markdown
https://github.com/cebe/markdown
1.1ã®ã¨ãã® PHPMarkdownExtra ã«ä»£ãã£ã¦ããããæ¡ç¨ãããããã§ã«ã³ã¢ã«å ¥ã£ã¦ãã
- ã¿ããªããªãã¿ã®GFM (GitHubæ¹è¨) ã¢ã¼ããã
- ã·ã³ã¿ãã¯ã¹ãã¨ã«ã¢ã¸ã¥ã¼ã«ãåå²ãã¦æ¸ããã¦ãã
- Traitã¨ãã¦åããããã¢ã¸ã¥ã¼ã«ãå¿ è¦ãªã¶ãçµåããèªåã®ã«ã¹ã¿ã ãã¼ãµã¼ãä½ããã¨ãã§ãã
- Traitãªã®ã§ãªãã¸ã§ã¯ãéã®ã¡ãã»ã¼ã¸ã³ã°ããªãé度ãåºã
ãã³ããã¼ã¯ https://github.com/kzykhys/Markbench#readme
- parsedownã«å¹æµããé度 (ãã ãparsedownã¯æ¡å¼µæ§ãªãããã¦PHPMarkdownãã¨ããã»ã©)
- ciconaã«å¹æµããæ¡å¼µæ§ (ãã ãciconaã¯åé度ã«å¯¾ãã¦èª å®ããããã£ã¨å®è¡éåº¦ã«æé©åãã¦ããã¨æã)
ã¡ãªã¿ã«Yiiã«ã¯ä»¥åãã HtmlPurifier ãåæã¤ã³ã¹ãã¼ã«æ¸ã¿ã§ãããã©ã«ãã§é©åº¦ã« Markdown ããµãã¿ã¤ãºãã¾ãã
6 ææ°ã®PHP颿°ã¨ãã»ãã¥ãªãã£
- æ¥æãééãªã©ã®å½éåãintlãã¼ã¹(polyfillãã)ã«
- password_hash() / password_verify() (5.5ã) æ¨å¥¨
- ãªãã¦ãäºæå®è£ ãã (ãªããç¥ããã§ãã»ãã¥ã¢)
- ã¡ãªã¿ã«ããã¸ã§ã¯ãçææã«ã¯ããã¼æå·åã½ã«ããèªåçæ (ãªããç¥ããã§ãã»ãã¥ã¢)
- ã¡ãªã¿ã«ä½ãæ¸ããªãã¦ããã©ã¼ã ã«CSRF対çãå¹ãã¦ãã¦ãããããè§£é¤ããªããããæå¹ (ãªããç¥ããã§ãã»ãã¥ã¢)
7 Codeception
BDD風ã®Acceptanceãã¹ã(Webãµã¼ãã®å¤ãããã¹ã)ã¨Functionalãã¹ã(ãã¬ã¼ã ã¯ã¼ã¯ã®ãªã¯ã¨ã¹ãå ¨ä½ããã¹ã)
ã¢ããªã±ã¼ã·ã§ã³ã®å®è£
ã¯ã ãããã Yii::$app ãæããµã¼ãã¹ãã±ã¼ã¿ã¼ã«ä¾åããã®ã§ãã ã£ãããã£ããªã¯ã¨ã¹ãã¾ããã¨ãã¹ãããé«ç´ãªãã¹ãã£ã³ã°ãã¬ã¼ã ã¯ã¼ã¯ããµãã¼ããããã
ã¾ãSeleniumã«ãã§ãããã©ãããã©ã«ãã®PhpBrowserãªããPHPã ãããã°HTTPããµã¼ãã®å¤ãããã¹ãã§ãããã
ãã¡ããDbUnitã£ã½ããã¨ãå¯è½ãªåä½ãã¹ããããããä»»æã«PHPUnitã使ã£ã¦ãOK
8 HATEOASãªREST
RESTfulãªCRUDã«ç¹åããã³ã³ããã¼ã©ãã
ããã©ã«ãã§ActiveRecord(æ£ç¢ºã«ã¯Model)ã¸ã®ç´æ¥èªã¿æ¸ããå®è£ æ¸ã¿ã®ãã®ãã
ã§ããªãã¨ããã¾ã§Spring(Java)ã¨BEAR.Sundayé¢é£ã§ããèãããã¨ã®ãªãã£ãHATEOASããµãã¼ã http://en.wikipedia.org/wiki/HATEOAS#Implementations
ã¬ã¹ãã³ã¹ã«æ¬¡ã®ã¢ã¯ã·ã§ã³ã®é¸æè¢ãªã³ã¯ãç¾å¨ã®ãã¼ã¸ã£ã¼ç¶æ ãªã©ãå«ãã§è¿ããã¤ãPHPã¯REST-APIã«ç¹åãã¦ãããã³ãã¯ã¢ããªããã¥ã¢ãªAjaxã§ä½ã£ã¦ãããã
9 ãã®ä»ä»ã£ã½ãã©ã¤ãã©ãª
ãã¬ã¼ã ã¯ã¼ã¯ã¨åæä¸¦è¡éçºãããè±å¯ãªæ¡å¼µã©ã¤ãã©ãªãã»ã¼æ¨æºæ©è½ã¨è¨ã£ã¦ãããã§ããããã¸ã§ã¯ãã«ãã£ã¦ã¯ä½¿ããªãå ´åãããã®ã§ composer.json ã«æ¸ãã¦ããªããã©ã
- jQuery UI (DatePickerã¨ã便å©)
- Imagine 使ããããGD
- Faker ãã£ã¯ã¹ãã£ç¨ã®ã§ããããªãã¼ã¿ãèªåçæ
- MongoDBã®ActiveRecord (ãªãã¨åºåºãå ±é)
- å ¨ææ¤ç´¢ã¨ã³ã¸ã³ Elasticsearch / Sphinx
- Redis ãã£ãã·ã¥/ã»ãã·ã§ã³ (ãã¡ã¤ã«ãã¼ã¹ã®ãã®ã¨ç½®ãæãã¦è¨å®ããã ãã§OK)
- OAuthã¯ã©ã¤ã¢ã³ããã¬ã¼ã ã¯ã¼ã¯ (Facebook, GitHub, Google, Linkedin, Twitter, ...ãªã©åæå®è£ æ¸ã¿)
- 使ããã人ã¯Smartyã¨Twigã®ã¬ã³ãã©ã¼ãããã(ã¦ã£ã¸ã§ãã系使ããªããªã)
ã¢ã«ãã¡ç以åãã Elasticsearch ã®å®è£ ãããããããææ°æè¡ã«è²ªæ¬²ã§ããã§ããã
OAuthã®ãã¬ã¼ã ã¯ã¼ã¯ããããããã§è¨è¨è¿·ããªãã¦å©ããã¾ãããããã¯æä»£çã«ã¨ã¦ãç¾å®çã
10 ã³ãã¥ããã£ã®ã©ã¤ãã©ãª
ãªã©ãªã©ãPackagistã§yii2ã§æ¤ç´¢ãæ£å¼ãªãªã¼ã¹1ã¶æã§66ãã¼ã¸ãããfuelãfuelphpã§è©¦ãã¨1æ¡ãªã®ã§...
æ°ãããµã¼ãã¹ã¨ã®ããªãã¸ãã¦ã£ã¸ã§ãããªã©å¨è¾ºãè£å©ãããã®ããããå¤ããYiiãCSS/JSãå«ãã§ã®ãã¬ã¼ã ã¯ã¼ã¯ã§ããã¨ããã®ãå¹ãã¦ããã
éã«éçºææ³ãå¤ãããããªãã®ã¯å°ãªããææãã¾ã çãã¦ããªãããããããã¨ããã ããã yiisoft/* 以ä¸ã§ã«ãã¼ã§ãã¦ããããã
(Packagistã§ãããæ°ãå¤ããããã¬ã¼ã ã¯ã¼ã¯ã¯ãããã¯ããã§ãããããããµã¼ããã¼ãã£ã¼è£½ãªã®?!ãã£ã¦ãªããã¨ã¯ããï¼
ãã¢ã«ä½¿ã£ãããã¸ã§ã¯ã
(追è¨)
Dropbox - phpkansai-19-yii2-basic.zip
.git è¾¼ã¿ã§ããvendor ãå
¥ã£ã¦ãªãã®ã§ã composer install ã§ã©ããã