SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
GARŚĆ PORAD DLA
POCZĄTKUJĄCYCH
Michał Kurzeja, accesto.com
KTO?
• Michał Kurzeja
• Współzałożyciel WSG
• CTO @ accesto.com
• mkurzeja@accesto.pl
• @michalKurzeja
• 3 lata doświadczenia w Sf2
• Mąż, programista,
przedsiębiorca, piwowar
O CZYM?
• Środowisko (system, oprogramowanie)
• Uruchamianie projektu
• Kodzik
• Podejście do projektu
ŚRODOWISKO
• System
• PHP, serwer www
• Dodatki: composer, IDE …
SYSTEM
• Windows
• Linux
• OS X
Który wybrać?
PHP
• Jaką wersję wybrać?
• Połączenie z serwerem www
• A może HHVM?
SERWER WWW
DODATKI
• Composer
• Node, npm, bower, grunt …
• XDebug
• Mailcatcher, dnsmasq, ohmyzsh, psysh
IDE
• Wygoda/Obsługa klawiaturą :)
• Wykrywanie błędów
• Niezawodność
NIE DA SIĘ SZYBCIEJ?
http://blog.accesto.pl
URUCHAMIAMY PROJEKT
• Pobieramy Symfony 2
• Kontrola wersji, GIT?
• Konfiguracja
• Podział na bundle
• Testy
• Automatyzacja
POBIERAMY SYMFONY 2
• Composer
• Symfony Installer
• symfony new NAZWA_PROJEKTU
GIT?
• GIT czy nie GIT? Kiedy GIT?
• Repozytorium?
• Częste błędy i problemy
• git status
• git config --global core.excludesfile ~/.gitignore_global
• chmod
• Commit message!
PLIKI KONFIGURACYJNE
• Lokalne ustawienia zawsze w
parameters.yml
• Pamiętaj o aktualizacji parameters.yml.dist
PODZIAŁ NA BUNDLE
TESTY
• Testuj! Jeśli możesz to test-first (TDD)
• Zacznij od małych/prostych testów
• Dużo mocków = błędny design
• Behat to nie konieczność, BDD to nie jedyne
wyjście
• Czytaj
Symfony2 - garść porad
AUTOMATYZACJA
KODZIK
• Kontroler
• Serwisy
• Repozytoria
• Encje i Fixtures
• Formularze
• „Inne”
KONTROLERY
• Rozszerzając Controller (ContainerAware)
• POPO
• Wykorzystaj framework
Symfony2 - garść porad
Symfony2 - garść porad
SERWISY
• Interfejs
• Zależności
• ! Wstrzykiwanie kontenera
• Repozytoria
• http://php-and-
symfony.matthiasnoback.nl/2014/05/inject-a-repository-
instead-of-an-entity-manager/
ENCJE
• Logika?
• Skąd brać dane? - Fixtures
FORMULARZE
• Gdzie je definiować?
• Formularz jako serwis
• Typy podstawowe, extenstions, events,
transofmers
• Form Handler?
INNE
• Symfony Best Practices
• Standardy w Twojej firmie
• PSR-1 i PSR-2
EKSPERYMENTUJ!
PYTANIA ?
REKRUTUJEMY!
http://kariera.accesto.pl
WIĘCEJ NIEBAWEM
http://blog.accesto.pl i może na WSG ;)
GARŚĆ PORAD DLA
POCZĄTKUJĄCYCH
Michał Kurzeja, accesto.com

Mais conteúdo relacionado

Semelhante a Symfony2 - garść porad

Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPPiotr Horzycki
 
Umbraco - .NET-owy scyzoryk w świecie CMS-ów
Umbraco - .NET-owy scyzoryk w świecie CMS-ówUmbraco - .NET-owy scyzoryk w świecie CMS-ów
Umbraco - .NET-owy scyzoryk w świecie CMS-ówMarcin Zajkowski
 
Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]
Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]
Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]Squiz Poland
 
Kurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowegoKurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowegommyhhh
 
PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIWydawnictwo Helion
 
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentTomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentSharePoint Saturday Warsaw
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlSebastian Marek
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?GameDesire Company
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Wojciech Sznapka
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyWydawnictwo Helion
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaGameDesire Academy
 
Techniczna organizacja zespołu cz 2
Techniczna organizacja zespołu cz 2Techniczna organizacja zespołu cz 2
Techniczna organizacja zespołu cz 2intive
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Piotr Nalepa
 

Semelhante a Symfony2 - garść porad (20)

Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
 
Umbraco - .NET-owy scyzoryk w świecie CMS-ów
Umbraco - .NET-owy scyzoryk w świecie CMS-ówUmbraco - .NET-owy scyzoryk w świecie CMS-ów
Umbraco - .NET-owy scyzoryk w świecie CMS-ów
 
Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]
Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]
Jak wybrać odpowiedni system CMS dla swojej firmy? [PORADNIK]
 
Od zera do Automattica
Od zera do AutomatticaOd zera do Automattica
Od zera do Automattica
 
Kurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowegoKurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowego
 
PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie II
 
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentTomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
PHP5. Radocha z programowania
PHP5. Radocha z programowaniaPHP5. Radocha z programowania
PHP5. Radocha z programowania
 
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
 
Jakiego koloru jest Internet?
Jakiego koloru jest Internet?Jakiego koloru jest Internet?
Jakiego koloru jest Internet?
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zaplecza
 
Techniczna organizacja zespołu cz 2
Techniczna organizacja zespołu cz 2Techniczna organizacja zespołu cz 2
Techniczna organizacja zespołu cz 2
 
PHP. Rozmówki
PHP. RozmówkiPHP. Rozmówki
PHP. Rozmówki
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
 
Roaaar!
Roaaar!Roaaar!
Roaaar!
 

Mais de Michał Kurzeja

Kolejkowanie w systemach multi-tenant - PHPCon 2023
Kolejkowanie w systemach multi-tenant - PHPCon 2023Kolejkowanie w systemach multi-tenant - PHPCon 2023
Kolejkowanie w systemach multi-tenant - PHPCon 2023Michał Kurzeja
 
Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023Michał Kurzeja
 
Event-driven architecture, the easy way.pdf
Event-driven architecture, the easy way.pdfEvent-driven architecture, the easy way.pdf
Event-driven architecture, the easy way.pdfMichał Kurzeja
 
Rozszerzalność aplikacji Symfony
Rozszerzalność aplikacji SymfonyRozszerzalność aplikacji Symfony
Rozszerzalność aplikacji SymfonyMichał Kurzeja
 
Docker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem TraefikDocker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem TraefikMichał Kurzeja
 
Symfony messenger - PHPers Summit 2019
Symfony messenger - PHPers Summit 2019Symfony messenger - PHPers Summit 2019
Symfony messenger - PHPers Summit 2019Michał Kurzeja
 
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Michał Kurzeja
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Michał Kurzeja
 
Dr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyceDr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyceMichał Kurzeja
 

Mais de Michał Kurzeja (12)

Kolejkowanie w systemach multi-tenant - PHPCon 2023
Kolejkowanie w systemach multi-tenant - PHPCon 2023Kolejkowanie w systemach multi-tenant - PHPCon 2023
Kolejkowanie w systemach multi-tenant - PHPCon 2023
 
Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023
 
Event-driven architecture, the easy way.pdf
Event-driven architecture, the easy way.pdfEvent-driven architecture, the easy way.pdf
Event-driven architecture, the easy way.pdf
 
Rozszerzalność aplikacji Symfony
Rozszerzalność aplikacji SymfonyRozszerzalność aplikacji Symfony
Rozszerzalność aplikacji Symfony
 
Docker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem TraefikDocker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem Traefik
 
Symfony messenger - PHPers Summit 2019
Symfony messenger - PHPers Summit 2019Symfony messenger - PHPers Summit 2019
Symfony messenger - PHPers Summit 2019
 
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
 
Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019Strangler Pattern in practice @PHPers Day 2019
Strangler Pattern in practice @PHPers Day 2019
 
Dr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyceDr Strangler and Mr Hype - Strangler pattern w praktyce
Dr Strangler and Mr Hype - Strangler pattern w praktyce
 
Serverless Architecture
Serverless ArchitectureServerless Architecture
Serverless Architecture
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
Docker - introduction
Docker - introductionDocker - introduction
Docker - introduction
 

Symfony2 - garść porad

Notas do Editor

  1. Najpierw opowiem o środowisku: systemie, serwerze www, oprogramowaniu, IDE itp. Następnie przedyskutuję uruchamianie projektu i decyzje jakie należy podjąć: podział na bundle, kontrola wersji, testy, automatyzacja zadań. W kolejnej części przedstawię na przykładach wybrane elementy kodu Symfony 2 i zalecane praktyki z nimi związane Na koniec powiem trochę o podejściu do projektu i wykorzystywanych technologii
  2. Środowisko na pewno nie jest najważniejszym, ani najbardziej ekscytującym elementem związanym z rozwojem oprogramowania. Niestety, bez odpowiedniego środowiska ciężko jest rozwijać jakiekolwiek oprogramowanie, a co dopiero robić to wydajnie. Jeśli chcesz się nauczyć Symfony2 to pewnie siłą rzeczy przebrniesz przez całą konfigurację, ale chyba każdy się zgodzi, że poświęcony na to czas można wykorzystać znacznie lepiej. Dodatkowo często chęc zaoszczędzenia czasu powoduje, że przywiązujemy się do znanych nam technologii, w sytuacjach, gdzie zmiana na nowsze byłaby znacznie lepsza. Postaram się omówić kolejne elementy środowiska, abyś pokazać na co zwracać uwagę. Na końcu przedstawię szybki sposób na uruchomienie takiego środowiska z wykorzystaniem Ansible.
  3. Ułatwia ale nie zastępuje programisty; Notepad++ to nie to samo; Szybka nawigacja, skakanie po plikach/metodach itp;
  4. Composer - do tej pory; łatwo, ale trochę wolno i dodawał śmieciowe bundle Symfony Installer - nowość, bardzo szybkie, łatwiejsze, ale też dodaje śmieciowe bundle
  5. Generalnie: jakakikolwiek sys. kontr. wersji. GIT używa się b. przyjemnie. Nie wymaga serwera, może być używany tylko lokalnie. Zawsze warto - np. prywatne projekty, praca mgr. Można założyć repo na github/bitbucket za darmo. Śmieci - .idea, cache, parameters.yml, composer.phar, vendor; Używać ‚git status’ ; chmod (php-fpm) i kiedy wrzucać composer.lock
  6. Pamiętaj, aby wszystkie parametry takie jak nazwa i dane do bazy danych, smtp, systemów płatności trzymać w parameters.yml i ustawić domyślne lub puste wartości w parameters.yml.dist. Dodając funkcję zastanów się, czy któryś parametr nie powinien być definiowany w parameters.yml - np. co ile dni wysyłać automatyczny newsletter :) Istnieją wyjątki do tej reguły, o których wspomina “Best Practices”.
  7. Zalecenia mocno się zmieniały; obecna wersja w “Best Practices”. Nie będę zagłębiać się w ten temat, nie powinniście się zbytnio tym przejmować. ważne żeby dzielić projekt na bundle (logicznie); nie wszystko musi być w bundlu. Wpływ ma podejście - np. DDD.
  8. Buzzword BDD - 90% robi to źle, a Ty wcale nie musisz zaczynać do Behata.
  9. Automatyzuj co tylko możesz. Uruchomienie projektu/przeładowanie bazy wymaga kilku komend? Automatyzuj to! Assety wymagają kilku komend - automatyzuj! Tak samo zautomatyzowaliśmy podstawową konfigurację ubuntu - pracownik zamiast 4 godzin poświęci na set-up tylko 1.
  10. Wiemy jak uruchomić i na co zwracać uwagę. A co robimy źle w kodzie? Czyli zaczyna się „mięso”
  11. controller: szybko, łatwo, sporo metod pomocnicznych, czytelnie popo: lepsza świadomość zależności, separacja od FW, warto spróbować, ale prawdopodobnie nie warto stosować zawsze; ciekawe ćwieczenie fw: adnotacje: security, paramconverter, template, metody addFlash, redirect, not found etc.
  12. Jeśli tworzysz serwis, pomyśl najpierw o interfejsie -np. dla repozytorium. To ułatwia podmianę m.in. w testach. Uważaj co wstrzykujesz. Nie wstrzykuj zbyt wiele i nie wstrz. kontenera. Prostym i często tworz. serwisem są repozyt. Warto je tak definiować i warto tworzyć dla nich interfejsy.
  13. Uwaga na wrzucane logiki do encji. Zwykle nie powinna się znaleźć. Przykład: generowanie slug; sprawdzanie czy użytkownik ma do czegoś prawa. Do ładowania danych startowych do bazy używaj fixtures. Będzie o tym na prezentacji live
  14. Tworz klasy dla formularzy i definiuj je jako serwisy! Gdy nagle zajdzie potrzeba nowej zaleznosci, bedzie latwo ją dodać. Łatwo tez podmienic formularz. Koniecznie przejrzyj dokumentację dost. formow - wiekszosc da sie zrobic z ich uzyciem, a czesto niepotrzebnie ludzie sobie to komplikuja. Czasem warto zastanowic sie nad handlerami
  15. Przykłady z życia: r language i elasticsearch