SlideShare a Scribd company logo
1 of 33
Download to read offline
YII
NAGY PROJEKTEKBEN
PHP MEETUP, 2013.10.29.
BEMUTATKOZÁS
BOBOR SZABOLCS, CTO @ MITO
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
HOGYAN DOLGOZUNK
FOLYAMATOKRÓL RÖVIDEN
REDMINE, GIT, YII
KÖRNYEZETEK

Constantly
improve
core business

DEV

STAGING

Strengthen
new divisions

READ-­‐ONLY

PROD

Strengthen
new divisions

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-BEN
MIT, 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ÁSA
Eredeti

Docrooton belül van
a protected
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
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:
[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',	
	
),	
),
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',	
...	
);
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/css/
docroot/js/
docroot/images/*

docroot/assets/2472c2df/css/...
docroot/assets/2472c2df/images/...
docroot/assets/2472c2df/js/...
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
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
$ ./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
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
Congratulations

you've unlocked the
"Endless presentation" badge!
Köszi
a figyelmet!

Kérdezz  most,  
vagy  írj  később

Bobor Szabolcs
sz.bobor@mito.hu

More Related Content

Similar to PHP Meetup: Yii használata nagyobb projektekben.

Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Hajas Tamás
 
30 legfontosabb SEO javaslat a webáruházaknál 2017-ben
30 legfontosabb SEO javaslat a webáruházaknál 2017-ben30 legfontosabb SEO javaslat a webáruházaknál 2017-ben
30 legfontosabb SEO javaslat a webáruházaknál 2017-benKrisztián Száraz
 
Tóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelTóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelInformatikai Intézet
 
Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél?
Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél? Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél?
Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél? Robert Pinter
 
Újszerű együttműködési modell
Újszerű együttműködési modellÚjszerű együttműködési modell
Újszerű együttműködési modellPéter Harang
 
[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia UniversityZoltan Iszlai
 
SEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptx
SEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptxSEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptx
SEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptxKrisztián Száraz
 
T systems - agile workshop 1. session
T systems - agile workshop 1. sessionT systems - agile workshop 1. session
T systems - agile workshop 1. sessionPéter Lukács
 
üzleti inteligencia
üzleti inteligenciaüzleti inteligencia
üzleti inteligenciaCsősz Tamás
 
Magento
MagentoMagento
MagentoeRise
 
Hogyan fejlesztessünk webre II.
Hogyan fejlesztessünk webre II.Hogyan fejlesztessünk webre II.
Hogyan fejlesztessünk webre II.Imre Vitenyi
 
Hirdetes szoveg it gyakornok
Hirdetes szoveg it gyakornokHirdetes szoveg it gyakornok
Hirdetes szoveg it gyakornokborze
 
SEO - Online információszolgáltatási marketing konferencia
SEO - Online információszolgáltatási marketing konferenciaSEO - Online információszolgáltatási marketing konferencia
SEO - Online információszolgáltatási marketing konferenciaKrisztián Száraz
 
Élményarchitektúra J.J. Garrett nyomán
Élményarchitektúra J.J. Garrett nyománÉlményarchitektúra J.J. Garrett nyomán
Élményarchitektúra J.J. Garrett nyománMihály Minkó
 
Kiboard - BI meetup Budapest, Hungary (extended version)
Kiboard - BI meetup Budapest, Hungary (extended version)Kiboard - BI meetup Budapest, Hungary (extended version)
Kiboard - BI meetup Budapest, Hungary (extended version)Advancé technologies
 

Similar to PHP Meetup: Yii használata nagyobb projektekben. (16)

Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Responsive Webdesign Drupallal
Responsive Webdesign Drupallal
 
30 legfontosabb SEO javaslat a webáruházaknál 2017-ben
30 legfontosabb SEO javaslat a webáruházaknál 2017-ben30 legfontosabb SEO javaslat a webáruházaknál 2017-ben
30 legfontosabb SEO javaslat a webáruházaknál 2017-ben
 
Tóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelTóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésével
 
Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél?
Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél? Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél?
Munkát vagy munkahelyet vesz el a BI és az MI a cégeknél?
 
Újszerű együttműködési modell
Újszerű együttműködési modellÚjszerű együttműködési modell
Újszerű együttműködési modell
 
[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University
 
SEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptx
SEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptxSEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptx
SEO-vibes-Technikai-SEO-felertekelodese-2023-ban.pptx
 
T systems - agile workshop 1. session
T systems - agile workshop 1. sessionT systems - agile workshop 1. session
T systems - agile workshop 1. session
 
üzleti inteligencia
üzleti inteligenciaüzleti inteligencia
üzleti inteligencia
 
Magento
MagentoMagento
Magento
 
Berkes andrás pxml architektura 2013-01-16
Berkes andrás pxml architektura 2013-01-16Berkes andrás pxml architektura 2013-01-16
Berkes andrás pxml architektura 2013-01-16
 
Hogyan fejlesztessünk webre II.
Hogyan fejlesztessünk webre II.Hogyan fejlesztessünk webre II.
Hogyan fejlesztessünk webre II.
 
Hirdetes szoveg it gyakornok
Hirdetes szoveg it gyakornokHirdetes szoveg it gyakornok
Hirdetes szoveg it gyakornok
 
SEO - Online információszolgáltatási marketing konferencia
SEO - Online információszolgáltatási marketing konferenciaSEO - Online információszolgáltatási marketing konferencia
SEO - Online információszolgáltatási marketing konferencia
 
Élményarchitektúra J.J. Garrett nyomán
Élményarchitektúra J.J. Garrett nyománÉlményarchitektúra J.J. Garrett nyomán
Élményarchitektúra J.J. Garrett nyomán
 
Kiboard - BI meetup Budapest, Hungary (extended version)
Kiboard - BI meetup Budapest, Hungary (extended version)Kiboard - BI meetup Budapest, Hungary (extended version)
Kiboard - BI meetup Budapest, Hungary (extended version)
 

PHP Meetup: Yii használata nagyobb projektekben.

  • 3.
  • 4.
  • 5.
  • 6. 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
  • 10. 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
  • 11. 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
  • 12. SEGÉDSCRIPTEK • sasswatch command • staging creator script • release script • pull script Ezekről bővebben kicsit később
  • 13. MÓDOSÍTÁSOK A YII-BEN MIT, MIÉRT, HOGYAN?
  • 14. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. SETUP.PHP $ php setup.php development $ php setup.php staging $ php setup.php production
  • 20. 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
  • 21. 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
  • 22. 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', ), ),
  • 23. 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', ... );
  • 24. ASSET MANAGEMENT “CACHE PARA VAN, NYOMJ CTRL+F5-ÖT”
  • 25. 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?
  • 26. 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/...
  • 27. 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
  • 28. 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'), ), ), ),
  • 29. 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
  • 30. 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
  • 31. 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
  • 33. Köszi a figyelmet! Kérdezz  most,   vagy  írj  később Bobor Szabolcs sz.bobor@mito.hu