Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2][Offtopic] - luźne pytania
Forum PHP.pl > Forum > PHP > Frameworki
wujek2009
Cześć - mam kilka pytan odnośnie tego frameworka.

1)

Jeśli chce utworzyć helper/klasę pomocniczą i chciałbym jej używać zarówno w kontrolerach, innych helperach oraz widoku
to muszę taki helper zdefiniować jako "service" (po przez przypisanie do services.yml odpowiednich parametrów) i wówczas w wywoływać go:
w kontrolerach/innych helperach:
  1. $helper = $this->get('moj_heler')

a w widoku:
  1. $view['moj_helper']->funkcja()


Zgadza się?
Ogólnie chciałbym utworzyć sobie kilka helperów z metodami statycznymi do odbierania danych z tablicy array (krótko mówiąc kopie klasy "Arr" z frameworka Kohany)

2) Co to właściwie jest "Dependency Injection" ? Folder znajduje się w demowym bundle z Symfony2
3) Entity to inaczej model?
4)
Czy w "Entity" istotne są komentarze dla każdej funkcji, zmiennej? W przykładach znalezionych w sieci każda zmienna/funkcja jest ładne opisana i
zastanawiam się czy to:

a ) standard pisania (tj: opisywania projektu)
b ) punkt "a" + wymóg symfony2, aby projekt działał prawidłowo
(przykładowy zapis)
  1. /**
  2.   * @orm:Id
  3.   * @orm:Column(type="integer")
  4.   * @orm:GeneratedValue(strategy="IDENTITY")
  5.   */
  6. protected $id;
  7.  
  8. /**
  9.   * @orm:Column(type="string", length="255", unique=true)
  10.   */
  11. protected $name;


5)
Przyzwyczaiłem się do PSR-0, gdzie jak tworzyło się klasę to używało się zapisu w stylu:
class Library_Forms_Base i wczytywało klasę z folderu: library/forms/base.php

W Symfony2 zostało to zastąpione przez namespace, które działa na podobnej zasadzie, tak?

6)

Utworzyłem swój pierwszy bundle i zauważyłem, że w głównym katalogu HomeBundle znajduje się plik o nazwie XYZHomeBundle.php czy to plik, który jest plikiem "bootstrap.php" dla danego bundla? Mogę w nim definiować metody, które będą dostępne z poziomu innych kontrolerów w danym bundle?

Z góry dziękuje za nadesłane odpowiedzi :-)
destroyerr
Ja mam do Ciebie jedno pytanie: które "rozdziały" dokumentacji przeczytałeś?

Ad. 1
Problem w niewielkim stopniu dotyczy Symfony2, ale to w sumie standard. Kohana nazywa to helperem i jej prawo. Moim zdaniem gdyby istniał mechanizm automatycznego ładowania funkcji te funkcje nazywane były by funkcjami (a nie helperami). Wskazuje na to chociażby to, że są deklarowane jako statyczne. Skoro są to metody statyczne to nie ma sensu rejestrować ich jako usługi. Korzystaj z nich tak samo jak z funkcji z biblioteki standardowej i tak jak korzystałeś z nich w Kohanie.
Helpery w widokach opartych o php (mimo wszystko polecam twiga) to inna para kaloszy.

Ad. 2
Wstrzykiwanie zależności. Folder o tej nazwie (ale to tylko konwencja) służy do umieszczania w nim rzeczy związanych z konfiguracją kontenera zależności. Można w nim np. zdefiniować konfigurację jaką wspiera dany bundle (czyli tą wpisywaną w app/config/config.yml) wraz z utworzeniem na tej podstawie usług. Nie jest to element dla początkującego, dlatego też ciężko przy tłumaczeniu odnieść się do jego wiedzy.

Ad. 3
Nie

Ad. 4
Komentarze są dobrą praktyką, ale jeszcze lepszą jest odpowiednie nazywanie zmiennych i metod. W komentarzach mogą być zawarte tagi PHPDoc, które określają typy zmiennych (i inne rzeczy), jest to pomocne dla IDE aby mogły podpowiadać kod. To o co najprawdopodobniej pytasz to adnotacje (annotations). Encje nie są obsługiwane przez Symfony2 tylko przez Doctrine2. Doctrine2 jest ORMem wiec dla poprawnej pracy potrzebuje mieć zdefiniowane mapowanie, jednym ze sposobów są właśnie adnotacje (a także xml, yml i php).

Ad. 5
Symfony2 wspiera PSR-0 od początku. PSR-0 odnosi się głównie do przestrzeni nazw więc to nie jest tak, że Symfony2 coś sobie zastąpiło.

Ad. 6
Ten plik można nazwać bootstrapem dla danego bundla, ale nie ma mowy o metodach wywoływanych gdzieś w aplikacji. To jest element architektury frameworka, a nie Twojej aplikacji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.