Upload
szabolcs-bobor
View
872
Download
2
Embed Size (px)
DESCRIPTION
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.
Citation preview
YII NAGY PROJEKTEKBEN
PHP MEETUP, 2013.10.29.
BEMUTATKOZÁSBOBOR SZABOLCS, CTO @ MITO
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
HOGYAN DOLGOZUNKFOLYAMATOKRÓL RÖVIDEN
REDMINE, GIT, YII
Strengthen new divisions
Constantly improve
core business
KÖRNYEZETEK
STAGINGDEV Strengthen new divisionsPROD
READ-‐ONLY READ-‐ONLY
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
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
SEGÉDSCRIPTEK• sasswatch command • staging creator script • release script • pull script
Ezekről bővebben kicsit később
MÓDOSÍTÁSOK A YII-BENMIT, MIÉRT, HOGYAN?
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
KÖNYVTÁRSTRUKTÚRA ÁTALAKÍTÁSAEredeti
Docrooton belül van a protected
KÖNYVTÁRSTRUKTÚRA ÁTALAKÍTÁSAMito• docrooton kívülre
raktuk a protectedet • framework symlinkel a yii/framework-re • mindig van robots.txt
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
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
SETUP.PHP$ php setup.php development
$ php setup.php staging
$ php setup.php production
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
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
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', ), ),
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', ... );?>
ASSET MANAGEMENT“CACHE PARA VAN, NYOMJ CTRL+F5-ÖT”
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?
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/*
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
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'), ), ),),
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
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
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
Congratulations you've unlocked the
"Endless presentation" badge!