SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Seni projektai, nauji įrankiai




                                 Seni projektai, nauji įrankiai
                                     VilniusPHP Susitikimas #1


                                        Povilas Balzaravičius


                                       2012 m. gruodžio 6 d.
Seni projektai, nauji įrankiai
   Įžanga




Kas aš toks?


                 Povilas Balzaravičius
                 @Pawka
                 github.com/pawka
                 linkedin.com/in/pawka
                 pawka.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 įrankiai
   Projektų gaivinimas




        Pradedam!
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius




        Stilius
        Naujas projektas - naujas programavimo stilius.
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius



Standartas




        PSR
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius



PSR Standartas

        PHP Specification Request - programavimo stiliaus
        rekomendacija.
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius



PSR Standartas

        PHP Specification Request - programavimo stiliaus
        rekomendacija.

        Sudaro trys dokumentai:
            PSR-0 Autoload standartas.
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius



PSR Standartas

        PHP Specification Request - programavimo stiliaus
        rekomendacija.

        Sudaro trys dokumentai:
            PSR-0 Autoload standartas.
            PSR-1 “Basic Coding Standard” - Koduotė, PHP tagai,
                     konstantos, klasių ir metodų pavadinimai, …
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius



PSR Standartas

        PHP Specification Request - programavimo stiliaus
        rekomendacija.

        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 :-)
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius



PSR Standartas

        PHP Specification Request - programavimo stiliaus
        rekomendacija.

        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 įrankiai
   Projektų gaivinimas
      Kodo stilius



Sprendimas




        php-cs-fixer
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Kodo stilius



PHP Coding Standards Fixer


        Įrankis skirtas kodo stiliaus tvarkymui pagal PSR-1 ir PSR-2
        standartus.
             Autorius: Fabien Potencier
             http://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 įrankiai
   Projektų 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 :-)
Seni projektai, nauji įrankiai
   Projektų 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 įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos




        Išorinės bibliotekos
        Naudojam tai, kas jau sukurta.
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Problemos



                 Nepatogu įtrauktį į kodą.
                 Gali priklausyti nuo kitų bibliotekų.
                 Saugomos kartu su projekto kodu.
                 Nepatogu atnaujinti.
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Sprendimas




        Composer
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Composer




                 Autorius: Jordi Boggiano
                 http://getcomposer.org/
                 Suranda, instaliuoja, atnaujina ir autoloadina paketus.
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Composer - naudojimas




            1    curl -s https://getcomposer.org/installer | php
            2    Parsiunčiamas composer.phar
            3    php composer.phar <komanda>
Seni projektai, nauji įrankiai
   Projektų 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 įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Composer - naudojimas
        composer.json pavyzdys
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Composer - naudojimas
        composer.json pavyzdys




        O tada…
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos




        Iš ko rinktis?
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Symfony Components

        symfony.com/components
                BrowserKit            HttpKernel
                ClassLoader           Locale
                Config                 Process
                Console               Routing
                CssSelector           Security
                DependencyInjection   Serializer
                DomCrawler            Templating
                EventDispatcher       Translation
                Finder                Validator
                Form                  Yaml
                HttpFoundation
Seni projektai, nauji įrankiai
   Projektų gaivinimas
      Išorinės bibliotekos



Zend Framework 2




        48 atskiri komponentai
        framework.zend.com
Seni projektai, nauji įrankiai
   Mano pasirinkimas




        Kaip dirbu aš?
Seni projektai, nauji įrankiai
   Mano 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 įrankiai
   Mano pasirinkimas
      Dependency Injection Container




        Dependency Injection
        Container
Seni projektai, nauji įrankiai
   Mano 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 a
        lot of dependencies, a Dependency Injection Container can be
        really helpful (think of a framework for instance).

        Pasiskaitymui: “What is Dependency Injection” by @fabpot.
Seni projektai, nauji įrankiai
   Mano pasirinkimas
      Dependency Injection Container



Pimple

        A simple Dependency Injection Container for PHP 5.3
            Autorius: Fabien Potencier
            pimple.sensiolabs.org
            Paprastas
            Greitas
            Integravimas - kelios eilutės.
            Primityvus (pvz. lyginant su Symfony
            DependencyInjection)
Seni projektai, nauji įrankiai
   Mano pasirinkimas
      Routing




        Routing
Seni projektai, nauji įrankiai
   Mano 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 įrankiai
   Mano 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 įrankiai
   Mano pasirinkimas
      Teisingas kodas




        Teisingas kodas
Seni projektai, nauji įrankiai
   Mano pasirinkimas
      Teisingas kodas



Service-oriented architecture


        Symfony Glossary
        A Service is a generic term for any PHP object that performs
        a specific task. A service is usually used "globally", such as a
        database connection object or an object that delivers email
        messages. In Symfony2, services are often configured and
        retrieved from the service container. An application that has
        many decoupled services is said to follow a service-oriented
        architecture.
Seni projektai, nauji įrankiai
   Mano 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 TIK
                 servisus.
Seni projektai, nauji įrankiai
   Pabaiga




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 naujas
                 funkcijas.
Seni projektai, nauji įrankiai
   Pabaiga




                                 Ačiū

Más contenido relacionado

Destacado

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Seni projektai, nauji įrankiai

  • 1. Seni projektai, nauji įrankiai Seni projektai, nauji įrankiai VilniusPHP Susitikimas #1 Povilas Balzaravičius 2012 m. gruodžio 6 d.
  • 2. Seni projektai, nauji įrankiai Įžanga Kas aš toks? Povilas Balzaravičius @Pawka github.com/pawka linkedin.com/in/pawka pawka.linija.net
  • 3. Seni projektai, nauji įrankiai Įžanga Seni projektai Seni projektai
  • 4. 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.
  • 5. 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…
  • 6. Seni projektai, nauji įrankiai Projektų gaivinimas Pradedam!
  • 7. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius Stilius Naujas projektas - naujas programavimo stilius.
  • 8. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius Standartas PSR
  • 9. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius PSR Standartas PHP Specification Request - programavimo stiliaus rekomendacija.
  • 10. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius PSR Standartas PHP Specification Request - programavimo stiliaus rekomendacija. Sudaro trys dokumentai: PSR-0 Autoload standartas.
  • 11. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius PSR Standartas PHP Specification Request - programavimo stiliaus rekomendacija. Sudaro trys dokumentai: PSR-0 Autoload standartas. PSR-1 “Basic Coding Standard” - Koduotė, PHP tagai, konstantos, klasių ir metodų pavadinimai, …
  • 12. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius PSR Standartas PHP Specification Request - programavimo stiliaus rekomendacija. 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 :-)
  • 13. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius PSR Standartas PHP Specification Request - programavimo stiliaus rekomendacija. 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/
  • 14. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius Sprendimas php-cs-fixer
  • 15. Seni projektai, nauji įrankiai Projektų gaivinimas Kodo stilius PHP Coding Standards Fixer Įrankis skirtas kodo stiliaus tvarkymui pagal PSR-1 ir PSR-2 standartus. Autorius: Fabien Potencier http://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).
  • 16. Seni projektai, nauji įrankiai Projektų 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 :-)
  • 17. Seni projektai, nauji įrankiai Projektų 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)
  • 18. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Išorinės bibliotekos Naudojam tai, kas jau sukurta.
  • 19. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Problemos Nepatogu įtrauktį į kodą. Gali priklausyti nuo kitų bibliotekų. Saugomos kartu su projekto kodu. Nepatogu atnaujinti.
  • 20. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Sprendimas Composer
  • 21. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Composer Autorius: Jordi Boggiano http://getcomposer.org/ Suranda, instaliuoja, atnaujina ir autoloadina paketus.
  • 22. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Composer - naudojimas 1 curl -s https://getcomposer.org/installer | php 2 Parsiunčiamas composer.phar 3 php composer.phar <komanda>
  • 23. Seni projektai, nauji įrankiai Projektų 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.
  • 24. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos
  • 25. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Composer - naudojimas composer.json pavyzdys
  • 26. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Composer - naudojimas composer.json pavyzdys O tada…
  • 27. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Iš ko rinktis?
  • 28. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Symfony Components symfony.com/components BrowserKit HttpKernel ClassLoader Locale Config Process Console Routing CssSelector Security DependencyInjection Serializer DomCrawler Templating EventDispatcher Translation Finder Validator Form Yaml HttpFoundation
  • 29. Seni projektai, nauji įrankiai Projektų gaivinimas Išorinės bibliotekos Zend Framework 2 48 atskiri komponentai framework.zend.com
  • 30. Seni projektai, nauji įrankiai Mano pasirinkimas Kaip dirbu aš?
  • 31. Seni projektai, nauji įrankiai Mano 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.
  • 32. Seni projektai, nauji įrankiai Mano pasirinkimas Dependency Injection Container Dependency Injection Container
  • 33. Seni projektai, nauji įrankiai Mano 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 a lot of dependencies, a Dependency Injection Container can be really helpful (think of a framework for instance). Pasiskaitymui: “What is Dependency Injection” by @fabpot.
  • 34. Seni projektai, nauji įrankiai Mano pasirinkimas Dependency Injection Container Pimple A simple Dependency Injection Container for PHP 5.3 Autorius: Fabien Potencier pimple.sensiolabs.org Paprastas Greitas Integravimas - kelios eilutės. Primityvus (pvz. lyginant su Symfony DependencyInjection)
  • 35. Seni projektai, nauji įrankiai Mano pasirinkimas Routing Routing
  • 36. Seni projektai, nauji įrankiai Mano 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 :-(
  • 37. Seni projektai, nauji įrankiai Mano pasirinkimas Routing Symfony Routing Component symfony.com/doc/current/components/routing/ Integravimas - kelios eilutės. Sprendžia visas anksčiau aprašytas problemas.
  • 38. Seni projektai, nauji įrankiai Mano pasirinkimas Teisingas kodas Teisingas kodas
  • 39. Seni projektai, nauji įrankiai Mano pasirinkimas Teisingas kodas Service-oriented architecture Symfony Glossary A Service is a generic term for any PHP object that performs a specific task. A service is usually used "globally", such as a database connection object or an object that delivers email messages. In Symfony2, services are often configured and retrieved from the service container. An application that has many decoupled services is said to follow a service-oriented architecture.
  • 40. Seni projektai, nauji įrankiai Mano 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 TIK servisus.
  • 41. Seni projektai, nauji įrankiai Pabaiga 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 naujas funkcijas.
  • 42. Seni projektai, nauji įrankiai Pabaiga Ačiū