Symfony 2.3 Wstęp do

1,112 views
1,000 views

Published on

Wstęp do Symfony 2.3 - budowa i struktura.

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,112
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Symfony 2.3 Wstęp do

  1. 1. Wstęp do
  2. 2. Budowa Symfony ● Struktura HMVC ● Aplikacja jako zestaw klocków (Bundle) ● ● Podstawy HTTP jako wzór komunikacji z aplikacją Request → Controller → Response Przestrzenie nazw: Tribal/NewsletterBundle
  3. 3. Struktura HMVC
  4. 4. Aplikacja jako zestaw modułów
  5. 5. The Symfony Application Flow
  6. 6. Przestrzenie nazw ● namespace EtudePagesBundleController; use SymfonyComponentHttpFoundationRequest; class PageController extends Controller {} ZAMIAST require_once(BASE_DIR.’vendor/Symfony/Component/.../Request.php’); ● Pozwala używać tej samej nazwy klasy w obrębie różnych przestrzeni nazw: use SymfonyComponentHttpFoundationRequest; use EtudePagesBundleCoreRequest as PageRequest;
  7. 7. Dependency Injection ● ● ● public SomeClass (MyClass $myObject) { $this->myObject = $myObject; } ZAMIAST public SomeClass() { $myObject = new MyClass(); $myObject->param1 = „value1” }
  8. 8. Architektura Bundle’a ● Struktura folderów ● Controller i Routing ● View i Twig ● Model i Doctrine
  9. 9. Struktura folderów ● Controller ● DependencyInjection ● Entity ● Form ● Resources – – public – ● config views Tests
  10. 10. Controller namespace EtudePagesBundleController; use SymfonyBundleFrameworkBundleControllerController; class DefaultController extends Controller { public function indexAction() { return new Response('Index', 200, array('Content-Type' => 'text/plain')); } public function viewAction($uri) { return $this->render('EtudePagesBundle:Default:index.html.twig', array('name' => $uri)); } }
  11. 11. Routing ● YML pages_show: pattern: /show/{id} defaults: { _controller: "EtudePagesBundle:Page:show" } ● Annotations /** * @Route("/hello/{name}", name="_demo_hello") * @Template() */ public function helloAction($name) { return array('name' => $name); }
  12. 12. Routing ● ● ● Pozostałe: XML, PHP YML: + deklaracja w jednym miejscu + dobre rozwiązanie dla internacjonalizacji - wymaga minimalnie więcej czasu Anotacje + w tym samym miejscu co kontroler + piszesz adres zaraz obok metody - potrzeba ingerencji w kontroler w celu zmiany adresu - i tak musisz podać definicję w pliku yml
  13. 13. Views i Twig
  14. 14. Model i Doctrine
  15. 15. Symfony Workflow ● Nowy projekt ● Nowy bundle ● Nowy model ● Update bazy ● CRUD ● Git Commit
  16. 16. Nowy projekt ● Pobierz composer curl -sS https://getcomposer.org/installer | php ● Stwórz projekt composer create-project symfony/framework-standard-edition Symfony
  17. 17. Nowy bundle php app/console generate:bundle --namespace=Tribal/HelloWorldBundle
  18. 18. Nowy model php app/console doctrine:generate:entity
  19. 19. Wygeneruj setters/getter ● (opcjonalnie dla własnego modelu) php app/console doctrine:generate:entities
  20. 20. Stwórz bazę php app/console doctrine:database:create
  21. 21. Stwórz tabele php app/console doctrine:schema:update --force
  22. 22. Wygeneruj controller ● php app/console doctrine:generate:crud Lub formularz ● php app/console doctrine:generate:form
  23. 23. Symfony Best Practices ● Commituj tylko swój kod (ignoruj gotowe biblioteki) ● 1 bundle = 1 zadanie ● Don’t Repeat Yourself ● YML for routing, Annotations for Doctrine ● Używaj FormType do generowania formularzy ● Pisz testy dla swoich pakietów
  24. 24. Dalsza lektura ● ● ● ● ● Symfony The Book http://symfony.com/doc/current/book/index.html Symfony Blog Tutorial http://tutorial.symblog.co.uk/ Symfony Job List Tutorial http://www.intelligentbee.com/blog/tag/symfony2-jobeet/ KNP Univeristy Video Tutorials https://knpuniversity.com/ Symfony 2 Cheat Sheet http://www.symfony2cheatsheet.com/
  25. 25. Teraz możecie zakuwać

×