![Page 1: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/1.jpg)
YII NAGY PROJEKTEKBEN
PHP MEETUP, 2013.10.29.
![Page 2: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/2.jpg)
BEMUTATKOZÁSBOBOR SZABOLCS, CTO @ MITO
![Page 3: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/3.jpg)
![Page 4: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/4.jpg)
![Page 5: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/5.jpg)
![Page 6: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/6.jpg)
CONCEPT CREATION
DEVELOPMENT FRONT-END &
BACK-END
GRAPHIC DESIGN
CONTENT CREATION
SEO & SEM
DATA MINING
CRM & DATA ANALYSIS
STRATEGIC CONSULTING
QUALITY ASSURANCE
MEDIA PLANNING &
BUYINGUX
RESEARCH & DESIGN
ATL PRODUCTION
WEBSITE HOSTING & OPERATION
SOCIAL MEDIA MANAGEMENT
MIVEL FOGLALKOZUNK
CONCEPT CREATION
DEVELOPMENT FRONT-END &
BACK-END
GRAPHIC DESIGN
CONTENT CREATION
SEO & SEM
DATA MINING
CRM & DATA ANALYSIS
STRATEGIC CONSULTAN
CY
QUALITY ASSURANCE
MEDIA PLANNING &
BUYINGUX
RESEARCH & DESIGN
ATL PRODUCTION
WEBSITE HOSTING &
MAINTENANCE
SOCIAL MEDIA MANAGEMENT
MITO
![Page 7: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/7.jpg)
HOGYAN DOLGOZUNKFOLYAMATOKRÓL RÖVIDEN
![Page 8: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/8.jpg)
REDMINE, GIT, YII
![Page 9: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/9.jpg)
Strengthen new divisions
Constantly improve
core business
KÖRNYEZETEK
STAGINGDEV Strengthen new divisionsPROD
READ-‐ONLY READ-‐ONLY
![Page 10: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/10.jpg)
KONZERV REPOK• Három konzerv reponk van: • Yii Base - egyszerű microsite-okhoz • FB Base - Facebook appokhoz • CMS - Mito CMS alapú oldalakhoz
• Előnyök: • gyorsan ki lehet húzni új projekteket • a rendszeresen igényelt funkciókat nem kell régebbi
projektekből másolgatni, minden megvan egy helyen • Git submodule-ként használjuk a Yii-t és a Bootstrapet
![Page 11: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/11.jpg)
KLÓNOZÁS$ git clone --recursive ssh://git@xxxxx:yyyy/mito/facebook_base.git .
• Hátrány: minden app minden példánya tartalmazza a Yii és a Bootstrap aktuális verzióját • Előny: nem kell félnünk, hogy egy új Yii vagy
Boostrap verzió elrontja egy régebbi appunkat
![Page 12: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/12.jpg)
SEGÉDSCRIPTEK• sasswatch command • staging creator script • release script • pull script
Ezekről bővebben kicsit később
![Page 13: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/13.jpg)
MÓDOSÍTÁSOK A YII-BENMIT, MIÉRT, HOGYAN?
![Page 14: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/14.jpg)
A YII-RŐL RÖVIDEN• http://www.yiiframework.com/ • Könnyen kezelhető, gyors, egyszerű MVC
keretrendszer • 2009 óta fejlesztik • 1.1.X verziót használjuk, a 2.0 még nem
készült el
![Page 15: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/15.jpg)
KÖNYVTÁRSTRUKTÚRA ÁTALAKÍTÁSAEredeti
Docrooton belül van a protected
![Page 16: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/16.jpg)
KÖNYVTÁRSTRUKTÚRA ÁTALAKÍTÁSAMito• docrooton kívülre
raktuk a protectedet • framework symlinkel a yii/framework-re • mindig van robots.txt
![Page 17: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/17.jpg)
ENVIRONMENT-FÜGGŐ CONFIGOK• Yii alapból nem támogatja, pedig minden
környezetben különböző beállításokra van szükség (pl. DB) • Alap: • egy main.php és egy console.php
• Kiegészítés: • common.php (megosztott paraméterek miatt) • 3 env = 3 különböző config
![Page 18: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/18.jpg)
ENVIRONMENT-FÜGGŐ CONFIGOK• Két master config fájl • Három könyvtár a három
environmentnek • ENV fálj mondja meg, melyik
környezetben vagyunk • env.php beállítja a YII_CONFIG_ENVIRONMENT-et és a YII_DEBUG értékét is helyesen
• loader.php összemerge-öli a master és env-függő configokat
![Page 19: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/19.jpg)
SETUP.PHP$ php setup.php development
$ php setup.php staging
$ php setup.php production
![Page 20: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/20.jpg)
SETUP.PHP• Könyvtárak létrehozása, jogosultságok
beállítása: • protected/runtime • docroot/assets • docroot/problems
• ENV fájl létrehozása • protected/config/ENV
![Page 21: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/21.jpg)
BOOTSTRAP AZ ADMINON• Yii Bootstrap http://www.yiiframework.com/extension/bootstrap/ • Előnyök: • igényes, szép admin felület külön gfx és frontend
beavatkozás nélkül • dinamikus táblázatok és gombok elég egyszerűen,
Yii widgetként
![Page 22: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/22.jpg)
BOOTSTRAP AZ ADMINON• Submodule-ként használjuk:
• config:
[submodule "protected/extensions/bootstrap"] path = protected/extensions/bootstrap url = ssh://git@xxxx:yyyy/mito/yii-bootstrap.git
'components'=>array( 'bootstrap'=>array( 'class'=>'bootstrap.components.Bootstrap', ), ),
![Page 23: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/23.jpg)
BOOTSTRAP AZ ADMINON• admin/views/layouts/index.php:
• táblázat létrehozása:
<? Yii::app()->bootstrap->register(); ?>
<? $this->widget('bootstrap.widgets.TbGridView', array( 'type' => 'striped bordered condensed', ... );?>
![Page 24: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/24.jpg)
ASSET MANAGEMENT“CACHE PARA VAN, NYOMJ CTRL+F5-ÖT”
![Page 25: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/25.jpg)
A PROBLÉMA• Statikus fájlokat (JS, CSS, fontok, képek) a
böngésző becache-eli, mindig CTRL+F5-öt kell nyomni • Különösen akkor van gond, ha frissítesz egy
site-ot: a HTML már új, a CSS még régi • Ismerős, ugye?
![Page 26: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/26.jpg)
MEGOLDÁS: ASSET MANAGEMENT• Yii feature: http://www.yiiframework.com/
wiki/148/understanding-assets/
docroot/assets/2472c2df/css/... docroot/assets/2472c2df/images/... docroot/assets/2472c2df/js/...
docroot/css/ docroot/js/ docroot/images/*
![Page 27: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/27.jpg)
HASZNÁLAT• a frontend fejlesztő az src-be dolgozik
• dist könyvtár automatikusan jön létre, célja: forrás fájlokat ne publikáljuk
• Package-ekhttp://www.yiiframework.com/doc/api/1.1/CClientScript#packages-detail
!
• sasswatch fut a háttérben
<? Yii::app()->clientScript->registerPackage(‘main’); ?>
$ ./yiic sasswatch
![Page 28: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/28.jpg)
JQUERY CDN + FALLBACK• jQuery-t CDN-ről töltjük be, fallbackelve a Yii beépített verziójára • ez saját kiegészítés, ne próbáljátok ki otthon
'clientScript'=>array( 'class'=>'application.components.CClientScriptFallback', 'packages'=>array( 'jquery'=>array( // Yii-be az 1.8-as van beépítve; ezt töltjük be CDN-ről is 'baseUrl'=>'//ajax.googleapis.com/ajax/libs/jquery/1.8/', 'js'=>array(YII_DEBUG ? 'jquery.js' : 'jquery.min.js'), 'fallback'=>array('package'=>'jquery.yii','check'=>'window.jQuery'), ), 'jquery.yii'=>array( 'js'=>array(YII_DEBUG ? 'jquery.js' : 'jquery.min.js'), ), ),),
![Page 29: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/29.jpg)
PUBLIKÁLÁS!
• Összefűzi és minify-olja a javascript fájlokat • Closure compilert Yii extensionként használjuk
• Legenerálja a scss-ből a css-t a dist könyvtárba • Átmásolja az src/img és src/fonts
könyvtárakat a dist-be
$ ./yiic compile
![Page 30: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/30.jpg)
RELEASE BASH SCRIPT$ release!
• Alapvetően két branch gitben: master (dev), release (stabil) • Mit csinál? •git stash • checkout master •ha nincs még release branch, akkor létrehozza •merge-eli a változásokat a release ággal •push • visszaáll arra a branch-re, amin voltál •git stash pop
![Page 31: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/31.jpg)
DEPLOY$ pull!
• Ha nem vagy apache, akkor sudozik egyet • git pull • yii migrate up • yii deploy • megtoucholja az assetsben lévő könytárakat, ha
valami frissült bennük• megtoucholja az assetsben lévő könytárakat
![Page 32: PHP Meetup: Yii használata nagyobb projektekben](https://reader035.vdocuments.mx/reader035/viewer/2022062419/558b58a7d8b42a9a2c8b4602/html5/thumbnails/32.jpg)
Congratulations you've unlocked the
"Endless presentation" badge!