PHP Meetup: Yii használata nagyobb projektekben.

1,108 views

Published on

A Mito-ban a legtöbb fejlesztéshez Yii-t használunk, a prezentációban bemutatom azokat az egyedi módosításokat, kiegészítéseket, munkafolyamatokat, amelyek segítségével nagyobb projektekben is használható a keretrendszer.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,108
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PHP Meetup: Yii használata nagyobb projektekben.

  1. 1. YII NAGY PROJEKTEKBEN PHP MEETUP, 2013.10.29.
  2. 2. BEMUTATKOZÁS BOBOR SZABOLCS, CTO @ MITO
  3. 3. MIVEL FOGLALKOZUNK MEDIA MEDIA PLANNING & PLANNING & BUYING BUYING WEBSITE WEBSITE HOSTING & HOSTING & MAINTENANCE OPERATION UX UX RESEARCH RESEARCH & DESIGN & DESIGN QUALITY QUALITY ASSURANCE ASSURANCE SOCIAL MEDIA SOCIAL MEDIA MANAGEMENT MANAGEMENT STRATEGIC STRATEGIC CONSULTAN CONSULTING CY ATL ATL PRODUCTION PRODUCTION MITO DEVELOPMENT DEVELOPMENT FRONT-END & FRONT-END & BACK-END BACK-END CRM & DATA CRM & DATA ANALYSIS ANALYSIS CONCEPT CONCEPT CREATION CREATION SEO & SEO & SEM SEM GRAPHIC GRAPHIC DESIGN DESIGN CONTENT CONTENT CREATION CREATION DATA DATA MINING MINING
  4. 4. HOGYAN DOLGOZUNK FOLYAMATOKRÓL RÖVIDEN
  5. 5. REDMINE, GIT, YII
  6. 6. KÖRNYEZETEK Constantly improve core business DEV STAGING Strengthen new divisions READ-­‐ONLY PROD Strengthen new divisions READ-­‐ONLY
  7. 7. 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
  8. 8. 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
  9. 9. SEGÉDSCRIPTEK • sasswatch command • staging creator script • release script • pull script Ezekről bővebben kicsit később
  10. 10. MÓDOSÍTÁSOK A YII-BEN MIT, MIÉRT, HOGYAN?
  11. 11. 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
  12. 12. KÖNYVTÁRSTRUKTÚRA ÁTALAKÍTÁSA Eredeti Docrooton belül van a protected
  13. 13. KÖNYVTÁRSTRUKTÚRA ÁTALAKÍTÁSA Mito • docrooton kívülre raktuk a protectedet • framework symlinkel a yii/framework-re • mindig van robots.txt
  14. 14. 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
  15. 15. 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
  16. 16. SETUP.PHP $ php setup.php development $ php setup.php staging $ php setup.php production
  17. 17. 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
  18. 18. 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
  19. 19. BOOTSTRAP AZ ADMINON • Submodule-ként használjuk: [submodule "protected/extensions/bootstrap"] path = protected/extensions/bootstrap url = ssh://git@xxxx:yyyy/mito/yii-bootstrap.git • config: 'components'=>array( 'bootstrap'=>array( 'class'=>'bootstrap.components.Bootstrap', ), ),
  20. 20. BOOTSTRAP AZ ADMINON • admin/views/layouts/index.php: <? Yii::app()->bootstrap->register(); ?> • táblázat létrehozása: <? ?> $this->widget('bootstrap.widgets.TbGridView', array( 'type' => 'striped bordered condensed', ... );
  21. 21. ASSET MANAGEMENT “CACHE PARA VAN, NYOMJ CTRL+F5-ÖT”
  22. 22. 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?
  23. 23. MEGOLDÁS: ASSET MANAGEMENT • Yii feature: http://www.yiiframework.com/ wiki/148/understanding-assets/ docroot/css/ docroot/js/ docroot/images/* docroot/assets/2472c2df/css/... docroot/assets/2472c2df/images/... docroot/assets/2472c2df/js/...
  24. 24. 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-ek
 http://www.yiiframework.com/doc/api/1.1/ CClientScript#packages-detail
 <? Yii::app()->clientScript->registerPackage(‘main’); ?> ! • sasswatch fut a háttérben $ ./yiic sasswatch
  25. 25. 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'), ), ), ),
  26. 26. PUBLIKÁLÁS $ ./yiic compile ! • Ö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
  27. 27. 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
  28. 28. 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
  29. 29. Congratulations you've unlocked the "Endless presentation" badge!
  30. 30. Köszi a figyelmet! Kérdezz  most,   vagy  írj  később Bobor Szabolcs sz.bobor@mito.hu

×