SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Wstęp do
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
Struktura HMVC
Aplikacja jako zestaw modułów
The Symfony Application Flow
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;
Dependency Injection
●

●

●

public SomeClass (MyClass $myObject) {
$this->myObject = $myObject;
}
ZAMIAST
public SomeClass() {
$myObject = new MyClass();
$myObject->param1 = „value1”
}
Architektura Bundle’a
●

Struktura folderów

●

Controller i Routing

●

View i Twig

●

Model i Doctrine
Struktura folderów
●

Controller

●

DependencyInjection

●

Entity

●

Form

●

Resources
–
–

public

–
●

config
views

Tests
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));
}
}
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);
}
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
Views i Twig
Model i Doctrine
Symfony Workflow
●

Nowy projekt

●

Nowy bundle

●

Nowy model

●

Update bazy

●

CRUD

●

Git Commit
Nowy projekt
●

Pobierz composer
curl -sS https://getcomposer.org/installer | php

●

Stwórz projekt
composer create-project symfony/framework-standard-edition Symfony
Nowy bundle

php app/console
generate:bundle --namespace=Tribal/HelloWorldBundle
Nowy model
php app/console doctrine:generate:entity
Wygeneruj setters/getter
●

(opcjonalnie dla własnego modelu)

php app/console doctrine:generate:entities
Stwórz bazę

php app/console doctrine:database:create
Stwórz tabele

php app/console doctrine:schema:update --force
Wygeneruj controller
●

php app/console doctrine:generate:crud

Lub formularz
●

php app/console doctrine:generate:form
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
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/
Teraz możecie zakuwać

Weitere ähnliche Inhalte

Andere mochten auch

Nuzhdina n 11-a_brend
Nuzhdina n 11-a_brendNuzhdina n 11-a_brend
Nuzhdina n 11-a_brend
Lanula
 
INTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCA
INTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCAINTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCA
INTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCA
Adriana Amo
 
Foundations by eric fleeks
Foundations   by eric fleeksFoundations   by eric fleeks
Foundations by eric fleeks
efleeks
 
The missing link
The missing linkThe missing link
The missing link
efleeks
 
PortHand Mobile Marketing
PortHand Mobile MarketingPortHand Mobile Marketing
PortHand Mobile Marketing
PortHand
 

Andere mochten auch (19)

Crafting a simple social media strategy
Crafting a simple social media strategyCrafting a simple social media strategy
Crafting a simple social media strategy
 
The laboratory method
The laboratory methodThe laboratory method
The laboratory method
 
Nuzhdina n 11-a_brend
Nuzhdina n 11-a_brendNuzhdina n 11-a_brend
Nuzhdina n 11-a_brend
 
India
IndiaIndia
India
 
12english
12english12english
12english
 
Pills
PillsPills
Pills
 
คว้าทุ่มสี่ทิศซันฟง
คว้าทุ่มสี่ทิศซันฟงคว้าทุ่มสี่ทิศซันฟง
คว้าทุ่มสี่ทิศซันฟง
 
Social Media Marketing - Daily Deals
Social Media Marketing - Daily DealsSocial Media Marketing - Daily Deals
Social Media Marketing - Daily Deals
 
INTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCA
INTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCAINTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCA
INTRODUCCIÓN A LA COMUNICACIÓN CIENTIFÍCA
 
Wonca Europe 2014, Lisbon: Health 2.0
Wonca Europe 2014, Lisbon: Health 2.0Wonca Europe 2014, Lisbon: Health 2.0
Wonca Europe 2014, Lisbon: Health 2.0
 
Foundations by eric fleeks
Foundations   by eric fleeksFoundations   by eric fleeks
Foundations by eric fleeks
 
Introduction to community management
Introduction to community managementIntroduction to community management
Introduction to community management
 
16english
16english16english
16english
 
Monarquía rusa
Monarquía rusaMonarquía rusa
Monarquía rusa
 
Ladder of success
Ladder of successLadder of success
Ladder of success
 
Empathize&define
Empathize&defineEmpathize&define
Empathize&define
 
The missing link
The missing linkThe missing link
The missing link
 
PortHand Mobile Marketing
PortHand Mobile MarketingPortHand Mobile Marketing
PortHand Mobile Marketing
 
Report in ap ( irish nicole ) 2
Report in ap ( irish nicole ) 2Report in ap ( irish nicole ) 2
Report in ap ( irish nicole ) 2
 

Ähnlich wie Symfony 2.3 Wstęp do

Functional widgets in Rails
Functional widgets in RailsFunctional widgets in Rails
Functional widgets in Rails
Sebastian Sito
 

Ähnlich wie Symfony 2.3 Wstęp do (16)

Potęga pliku .htaccess
Potęga pliku .htaccessPotęga pliku .htaccess
Potęga pliku .htaccess
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows Application
 
Rozszerzalność aplikacji Symfony
Rozszerzalność aplikacji SymfonyRozszerzalność aplikacji Symfony
Rozszerzalność aplikacji Symfony
 
Functional widgets in Rails
Functional widgets in RailsFunctional widgets in Rails
Functional widgets in Rails
 
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
 
Pure MVC - Mediovski
Pure MVC - MediovskiPure MVC - Mediovski
Pure MVC - Mediovski
 
Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023Rozszerzalność Symfony - PHPCon 2023
Rozszerzalność Symfony - PHPCon 2023
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)
 
Grok Artykul
Grok ArtykulGrok Artykul
Grok Artykul
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
 
Testy funkcjonalne
Testy funkcjonalneTesty funkcjonalne
Testy funkcjonalne
 
Php5
Php5Php5
Php5
 
Dobre przepisy na cake php
Dobre przepisy na cake phpDobre przepisy na cake php
Dobre przepisy na cake php
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Tworzenie aplikacji typu Rich Clients za pomocą Eclipse 4 RCP
Tworzenie aplikacji typu Rich Clients za pomocą Eclipse 4 RCPTworzenie aplikacji typu Rich Clients za pomocą Eclipse 4 RCP
Tworzenie aplikacji typu Rich Clients za pomocą Eclipse 4 RCP
 

Symfony 2.3 Wstęp do