seni projektai, nauji įrankiai

Post on 03-Jul-2015

1.027 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Kaip seniems PHP projektams pritaikyti naujus įrankius ir komponentus.

TRANSCRIPT

Seni projektai, nauji įrankiai

Seni projektai, nauji įrankiaiVilniusPHP Susitikimas #1

Povilas Balzaravičius

2012 m. gruodžio 6 d.

Seni projektai, nauji įrankiaiĮžanga

Kas aš toks?

Povilas Balzaravičius@Pawkagithub.com/pawkalinkedin.com/in/pawkapawka.linija.net

Seni projektai, nauji įrankiaiĮžanga

Seni projektai

Seni projektai

Seni projektai, nauji įrankiaiĮžanga

Seni projektai

Kas jie tokie?

PHP 4.x/5.x.Kodas >= 4 metų senumo.Niekur nematytas kodo stilius(-ai).Nenaudojamas žmonijai žinomas karkasas.include, require ir draugai.

Seni projektai, nauji įrankiaiĮžanga

Seni projektai

Kylančios problemos

Didžiulės sąnaudos tvarkingai perrašyti kodą.Naujo funkcionalumo pridėjimas reikalauja daug laiko.Kažką pajudinus viskas griūna.Šlykštoka dirbti…

Seni projektai, nauji įrankiaiProjektų gaivinimas

Pradedam!

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

StiliusNaujas projektas - naujas programavimo stilius.

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

Standartas

PSR

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PSR Standartas

PHP Specification Request - programavimo stiliausrekomendacija.

Sudaro trys dokumentai:PSR-0 Autoload standartas.PSR-1 “Basic Coding Standard” - Koduotė, PHP tagai,

konstantos, klasių ir metodų pavadinimai, …PSR-2 “Coding Style Guide” - Tarpai, skliausteliai ir

kableliai :-)

Standarto aprašymas: github.com/php-fig/fig-standards/

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PSR Standartas

PHP Specification Request - programavimo stiliausrekomendacija.

Sudaro trys dokumentai:PSR-0 Autoload standartas.

PSR-1 “Basic Coding Standard” - Koduotė, PHP tagai,konstantos, klasių ir metodų pavadinimai, …

PSR-2 “Coding Style Guide” - Tarpai, skliausteliai irkableliai :-)

Standarto aprašymas: github.com/php-fig/fig-standards/

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PSR Standartas

PHP Specification Request - programavimo stiliausrekomendacija.

Sudaro trys dokumentai:PSR-0 Autoload standartas.PSR-1 “Basic Coding Standard” - Koduotė, PHP tagai,

konstantos, klasių ir metodų pavadinimai, …

PSR-2 “Coding Style Guide” - Tarpai, skliausteliai irkableliai :-)

Standarto aprašymas: github.com/php-fig/fig-standards/

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PSR Standartas

PHP Specification Request - programavimo stiliausrekomendacija.

Sudaro trys dokumentai:PSR-0 Autoload standartas.PSR-1 “Basic Coding Standard” - Koduotė, PHP tagai,

konstantos, klasių ir metodų pavadinimai, …PSR-2 “Coding Style Guide” - Tarpai, skliausteliai ir

kableliai :-)

Standarto aprašymas: github.com/php-fig/fig-standards/

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PSR Standartas

PHP Specification Request - programavimo stiliausrekomendacija.

Sudaro trys dokumentai:PSR-0 Autoload standartas.PSR-1 “Basic Coding Standard” - Koduotė, PHP tagai,

konstantos, klasių ir metodų pavadinimai, …PSR-2 “Coding Style Guide” - Tarpai, skliausteliai ir

kableliai :-)

Standarto aprašymas: github.com/php-fig/fig-standards/

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

Sprendimas

php-cs-fixer

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PHP Coding Standards Fixer

Įrankis skirtas kodo stiliaus tvarkymui pagal PSR-1 ir PSR-2standartus.

Autorius: Fabien Potencierhttp://cs.sensiolabs.org/Galimybė tvarkyti tik tam tikras sritis (identacija,skliaustų išdėstymas, …)…ir/arba naudoti paruoštas konfigūracijas (sf20, sf21,magento, default).

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PHP Coding Standards Fixer - naudojimas

1 sudo wget http://cs.sensiolabs.org/get/php-cs-fixer.phar -O/usr/local/bin/php-cs-fixer

2 sudo chmod a+x /usr/local/bin/php-cs-fixer

3 php php-cs-fixer.phar fix /path/to/dir

4 Džiaugiamės tvarkingu kodu :-)

(dažniausiai)

Seni projektai, nauji įrankiaiProjektų gaivinimas

Kodo stilius

PHP Coding Standards Fixer - naudojimas

1 sudo wget http://cs.sensiolabs.org/get/php-cs-fixer.phar -O/usr/local/bin/php-cs-fixer

2 sudo chmod a+x /usr/local/bin/php-cs-fixer

3 php php-cs-fixer.phar fix /path/to/dir

4 Džiaugiamės tvarkingu kodu :-) (dažniausiai)

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Išorinės bibliotekosNaudojam tai, kas jau sukurta.

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Problemos

Nepatogu įtrauktį į kodą.Gali priklausyti nuo kitų bibliotekų.Saugomos kartu su projekto kodu.Nepatogu atnaujinti.

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Sprendimas

Composer

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Composer

Autorius: Jordi Boggianohttp://getcomposer.org/Suranda, instaliuoja, atnaujina ir autoloadina paketus.

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Composer - naudojimas

1 curl -s https://getcomposer.org/installer | php2 Parsiunčiamas composer.phar3 php composer.phar <komanda>

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Composer - paketų instaliavimas

1 Susirandam paketą ir jo versiją:php composer.phar search kažkas arba packagist.org.

2 Pvz. doctrine/dbal 2.3.0.3 Įtraukiam paketą į composer.json.4 php composer.phar install (arba update).5 Parsiųs paketus ir sugeneruos Autoload failus.

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Composer - naudojimas

composer.json pavyzdys

O tada…

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Composer - naudojimas

composer.json pavyzdys

O tada…

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Iš ko rinktis?

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Symfony Components

symfony.com/components

BrowserKitClassLoaderConfigConsoleCssSelectorDependencyInjectionDomCrawlerEventDispatcherFinderFormHttpFoundation

HttpKernelLocaleProcessRoutingSecuritySerializerTemplatingTranslationValidatorYaml

Seni projektai, nauji įrankiaiProjektų gaivinimas

Išorinės bibliotekos

Zend Framework 2

48 atskiri komponentaiframework.zend.com

Seni projektai, nauji įrankiaiMano pasirinkimas

Kaip dirbu aš?

Seni projektai, nauji įrankiaiMano pasirinkimas

Darbo planas

1 Stiliaus sutvarkymas.2 Composer paruošimas.3 DBAL (vienareikšmiškai doctrine/dbal).4 Dependency Injection Container.5 Routing’o įdiegimas.6 Naujo kodo rašymas teisinga tvarka.

Seni projektai, nauji įrankiaiMano pasirinkimas

Dependency Injection Container

Dependency InjectionContainer

Seni projektai, nauji įrankiaiMano pasirinkimas

Dependency Injection Container

Kam reikalingas?

Objektų kūrimo taisyklės saugomos vienoje vietoje.Lazy Loading - objektai kuriami tik tada, kai jų prireikia.

Fabien Potencier… when you need to manage a lot of different objects with alot of dependencies, a Dependency Injection Container can bereally helpful (think of a framework for instance).

Pasiskaitymui: “What is Dependency Injection” by @fabpot.

Seni projektai, nauji įrankiaiMano pasirinkimas

Dependency Injection Container

Pimple

A simple Dependency Injection Container for PHP 5.3Autorius: Fabien Potencierpimple.sensiolabs.orgPaprastasGreitasIntegravimas - kelios eilutės.Primityvus (pvz. lyginant su SymfonyDependencyInjection)

Seni projektai, nauji įrankiaiMano pasirinkimas

Routing

Routing

Seni projektai, nauji įrankiaiMano pasirinkimas

Routing

Kam reikalingas?

Iškviesti reikiamą Controller’io Actions’ą pagal URL.Iškviečiant priskirti kintamuosius iš URL.URL generatorius pagal route’o pavadinimą.Dažnai senesni projektai neturi :-(

Seni projektai, nauji įrankiaiMano pasirinkimas

Routing

Symfony Routing Component

symfony.com/doc/current/components/routing/Integravimas - kelios eilutės.Sprendžia visas anksčiau aprašytas problemas.

Seni projektai, nauji įrankiaiMano pasirinkimas

Teisingas kodas

Teisingas kodas

Seni projektai, nauji įrankiaiMano pasirinkimas

Teisingas kodas

Service-oriented architecture

Symfony GlossaryA Service is a generic term for any PHP object that performsa specific task. A service is usually used "globally", such as adatabase connection object or an object that delivers emailmessages. In Symfony2, services are often configured andretrieved from the service container. An application that hasmany decoupled services is said to follow a service-orientedarchitecture.

Seni projektai, nauji įrankiaiMano pasirinkimas

Teisingas kodas

SOA Robotikos taisyklės

Modeliai - žemiausias lygmuo, vieni apie kitus nežino.Servisas žino apie jam priklausančius modelius.Servisas gali žinoti apie kitus servisus.Kontroleriai nežino nieko apie modelius ir naudoja TIKservisus.

Seni projektai, nauji įrankiaiPabaiga

Apibendrinimas

Naują kodą rašykite tvarkingai.Seną kodą perrašinėkite nedidelėmis dalimis ir tik tada,kai to reikia.Naudokite jau sukurtus įrankius.Sugaišit laiko sutvarkymui, bet laimėsit kurdami naujasfunkcijas.

Seni projektai, nauji įrankiaiPabaiga

Ačiū

top related