php meetup: yii használata nagyobb projektekben

33
YII NAGY PROJEKTEKBEN PHP MEETUP, 2013.10.29.

Upload: szabolcs-bobor

Post on 25-Jun-2015

870 views

Category:

Technology


2 download

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.

TRANSCRIPT

Page 1: PHP Meetup: Yii használata nagyobb projektekben

YII NAGY PROJEKTEKBEN

PHP MEETUP, 2013.10.29.

Page 2: PHP Meetup: Yii használata nagyobb projektekben

BEMUTATKOZÁSBOBOR SZABOLCS, CTO @ MITO

Page 3: PHP Meetup: Yii használata nagyobb projektekben
Page 4: PHP Meetup: Yii használata nagyobb projektekben
Page 5: PHP Meetup: Yii használata nagyobb projektekben
Page 6: PHP Meetup: Yii használata nagyobb projektekben

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

HOGYAN DOLGOZUNKFOLYAMATOKRÓL RÖVIDEN

Page 8: PHP Meetup: Yii használata nagyobb projektekben

REDMINE, GIT, YII

Page 9: PHP Meetup: Yii használata nagyobb projektekben

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

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

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

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

MÓDOSÍTÁSOK A YII-BENMIT, MIÉRT, HOGYAN?

Page 14: PHP Meetup: Yii használata nagyobb projektekben

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

KÖNYVTÁRSTRUKTÚRA ÁTALAKÍTÁSAEredeti

Docrooton belül van a protected

Page 16: PHP Meetup: Yii használata nagyobb projektekben

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

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

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

SETUP.PHP$ php setup.php development

$ php setup.php staging

$ php setup.php production

Page 20: PHP Meetup: Yii használata nagyobb projektekben

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

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

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

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

ASSET MANAGEMENT“CACHE PARA VAN, NYOMJ CTRL+F5-ÖT”

Page 25: PHP Meetup: Yii használata nagyobb projektekben

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

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

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

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

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

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

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

Congratulations you've unlocked the

"Endless presentation" badge!

Page 33: PHP Meetup: Yii használata nagyobb projektekben

Köszi a figyelmet!

Bobor Szabolcs [email protected]

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