Seni projektai, nauji įrankiai
-
Upload
povilas-balzaravicius -
Category
Technology
-
view
1.027 -
download
2
description
Transcript of Seni projektai, nauji įrankiai
![Page 1: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/1.jpg)
Seni projektai, nauji įrankiai
Seni projektai, nauji įrankiaiVilniusPHP Susitikimas #1
Povilas Balzaravičius
2012 m. gruodžio 6 d.
![Page 2: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/2.jpg)
Seni projektai, nauji įrankiaiĮžanga
Kas aš toks?
Povilas Balzaravič[email protected]/pawkalinkedin.com/in/pawkapawka.linija.net
![Page 3: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/3.jpg)
Seni projektai, nauji įrankiaiĮžanga
Seni projektai
Seni projektai
![Page 4: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/4.jpg)
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.
![Page 5: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/5.jpg)
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…
![Page 6: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/6.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Pradedam!
![Page 7: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/7.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Kodo stilius
StiliusNaujas projektas - naujas programavimo stilius.
![Page 8: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/8.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Kodo stilius
Standartas
PSR
![Page 9: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/9.jpg)
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/
![Page 10: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/10.jpg)
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/
![Page 11: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/11.jpg)
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/
![Page 12: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/12.jpg)
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/
![Page 13: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/13.jpg)
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/
![Page 14: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/14.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Kodo stilius
Sprendimas
php-cs-fixer
![Page 15: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/15.jpg)
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).
![Page 16: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/16.jpg)
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)
![Page 17: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/17.jpg)
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)
![Page 18: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/18.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Išorinės bibliotekosNaudojam tai, kas jau sukurta.
![Page 19: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/19.jpg)
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.
![Page 20: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/20.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Sprendimas
Composer
![Page 21: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/21.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Composer
Autorius: Jordi Boggianohttp://getcomposer.org/Suranda, instaliuoja, atnaujina ir autoloadina paketus.
![Page 22: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/22.jpg)
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>
![Page 23: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/23.jpg)
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.
![Page 24: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/24.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
![Page 25: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/25.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Composer - naudojimas
composer.json pavyzdys
O tada…
![Page 26: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/26.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Composer - naudojimas
composer.json pavyzdys
O tada…
![Page 27: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/27.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Iš ko rinktis?
![Page 28: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/28.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Symfony Components
symfony.com/components
BrowserKitClassLoaderConfigConsoleCssSelectorDependencyInjectionDomCrawlerEventDispatcherFinderFormHttpFoundation
HttpKernelLocaleProcessRoutingSecuritySerializerTemplatingTranslationValidatorYaml
![Page 29: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/29.jpg)
Seni projektai, nauji įrankiaiProjektų gaivinimas
Išorinės bibliotekos
Zend Framework 2
48 atskiri komponentaiframework.zend.com
![Page 30: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/30.jpg)
Seni projektai, nauji įrankiaiMano pasirinkimas
Kaip dirbu aš?
![Page 31: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/31.jpg)
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.
![Page 32: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/32.jpg)
Seni projektai, nauji įrankiaiMano pasirinkimas
Dependency Injection Container
Dependency InjectionContainer
![Page 33: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/33.jpg)
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.
![Page 34: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/34.jpg)
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)
![Page 35: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/35.jpg)
Seni projektai, nauji įrankiaiMano pasirinkimas
Routing
Routing
![Page 36: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/36.jpg)
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 :-(
![Page 37: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/37.jpg)
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.
![Page 38: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/38.jpg)
Seni projektai, nauji įrankiaiMano pasirinkimas
Teisingas kodas
Teisingas kodas
![Page 39: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/39.jpg)
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.
![Page 40: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/40.jpg)
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.
![Page 41: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/41.jpg)
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.
![Page 42: Seni projektai, nauji įrankiai](https://reader036.fdocument.pub/reader036/viewer/2022062419/5595ff1a1a28ab96308b4653/html5/thumbnails/42.jpg)
Seni projektai, nauji įrankiaiPabaiga
Ačiū