Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Symfony2 - garść porad

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 31 Publicité
Publicité

Plus De Contenu Connexe

Similaire à Symfony2 - garść porad (20)

Publicité

Plus récents (20)

Symfony2 - garść porad

  1. 1. GARŚĆ PORAD DLA POCZĄTKUJĄCYCH Michał Kurzeja, accesto.com
  2. 2. 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
  3. 3. O CZYM? • Środowisko (system, oprogramowanie) • Uruchamianie projektu • Kodzik • Podejście do projektu
  4. 4. ŚRODOWISKO • System • PHP, serwer www • Dodatki: composer, IDE …
  5. 5. SYSTEM • Windows • Linux • OS X Który wybrać?
  6. 6. PHP • Jaką wersję wybrać? • Połączenie z serwerem www • A może HHVM?
  7. 7. SERWER WWW
  8. 8. DODATKI • Composer • Node, npm, bower, grunt … • XDebug • Mailcatcher, dnsmasq, ohmyzsh, psysh
  9. 9. IDE • Wygoda/Obsługa klawiaturą :) • Wykrywanie błędów • Niezawodność
  10. 10. NIE DA SIĘ SZYBCIEJ? http://blog.accesto.pl
  11. 11. URUCHAMIAMY PROJEKT • Pobieramy Symfony 2 • Kontrola wersji, GIT? • Konfiguracja • Podział na bundle • Testy • Automatyzacja
  12. 12. POBIERAMY SYMFONY 2 • Composer • Symfony Installer • symfony new NAZWA_PROJEKTU
  13. 13. 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!
  14. 14. PLIKI KONFIGURACYJNE • Lokalne ustawienia zawsze w parameters.yml • Pamiętaj o aktualizacji parameters.yml.dist
  15. 15. PODZIAŁ NA BUNDLE
  16. 16. 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
  17. 17. AUTOMATYZACJA
  18. 18. KODZIK • Kontroler • Serwisy • Repozytoria • Encje i Fixtures • Formularze • „Inne”
  19. 19. KONTROLERY • Rozszerzając Controller (ContainerAware) • POPO • Wykorzystaj framework
  20. 20. SERWISY • Interfejs • Zależności • ! Wstrzykiwanie kontenera • Repozytoria • http://php-and- symfony.matthiasnoback.nl/2014/05/inject-a-repository- instead-of-an-entity-manager/
  21. 21. ENCJE • Logika? • Skąd brać dane? - Fixtures
  22. 22. FORMULARZE • Gdzie je definiować? • Formularz jako serwis • Typy podstawowe, extenstions, events, transofmers • Form Handler?
  23. 23. INNE • Symfony Best Practices • Standardy w Twojej firmie • PSR-1 i PSR-2
  24. 24. EKSPERYMENTUJ!
  25. 25. PYTANIA ?
  26. 26. REKRUTUJEMY! http://kariera.accesto.pl
  27. 27. WIĘCEJ NIEBAWEM http://blog.accesto.pl i może na WSG ;)
  28. 28. GARŚĆ PORAD DLA POCZĄTKUJĄCYCH Michał Kurzeja, accesto.com

Notes de l'éditeur

  • 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
  • Ś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.
  • Ułatwia ale nie zastępuje programisty; Notepad++ to nie to samo; Szybka nawigacja, skakanie po plikach/metodach itp;
  • Composer - do tej pory; łatwo, ale trochę wolno i dodawał śmieciowe bundle

    Symfony Installer - nowość, bardzo szybkie, łatwiejsze, ale też dodaje śmieciowe bundle
  • 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
  • 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”.
  • 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.
  • Buzzword BDD - 90% robi to źle, a Ty wcale nie musisz zaczynać do Behata.
  • 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.
  • Wiemy jak uruchomić i na co zwracać uwagę. A co robimy źle w kodzie? Czyli zaczyna się „mięso”
  • 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.
  • 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.

  • 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
  • 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
  • Przykłady z życia: r language i elasticsearch

×