Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Wojciech Sznapka, dodany: 31.01.2011 12:15, tagi: php, symfony

Na firmowym blogu http://xlab.pl zamieściłem post odnośnie mojej ostatniej prezentacji na temat Symfony2 – zapraszam do lektury :-) Post jest dostępny pod tym linkiem.

Autor wpisu: batman, dodany: 31.01.2011 08:00, tagi: php

Jedną z najbardziej wyczekiwanych funkcjonalności po wprowadzeniu do PHP obiektowości z prawdziwego zdarzenia, były przestrzenie nazw. Jeszcze przed swoim pojawieniem się budziły kontrowersje za sprawą separatora. Nie dość, że mamy do dyspozycji strzałkę (dla obiektów, ich metod oraz właściwości), podwójny dwukropek (dla statycznych metod i właściwości), to dostaliśmy kolejny symbol – backslash, oddzielający od siebie kolejne przestrzenie nazw. Niezależnie od tego, czy symbol ten się nam podoba, czy też nie, warto wiedzieć co to są przestrzenie nazw i jak z nich korzystać.

Co to są przestrzenie nazw i po co powstały?

Odpowiedź na powyższe pytanie najlepiej będzie przedstawić na przykładzie. Załóżmy, że tworzymy duży projekt, w skład którego będzie wchodzić kilka aplikacji, między innymi blog oraz forum. Tak się składa, że obie aplikacje posiadają klasę o takiej samej nazwie – Entry, będącą obiektową reprezentacją pojedynczego posta/wpisu. Jeśli stworzymy widok prezentujący wpisy na blogu oraz posty na forum pojedynczego użytkownika, staniemy przez problemem doskonale opisanym w poniższym błędzie.

Fatal error: Cannot redeclare class Entry

W tym właśnie celu powstały przestrzenie nazw, które tworzą, jak sama nazwa wskazuje, przestrzeń, w której nazwa klasy musi pozostać unikatowa. Jeśli wykorzystane przez nas aplikacje posiadałyby przestrzenie nazw, np Blog oraz Forum, wówczas wspomniany błąd nie miałby miejsca.

Definiowanie przestrzeni nazw

Przestrzeń nazw musi zostać zdefiniowana w pierwszym wierszu pliku. W przeciwnym wypadku PHP zgłosi błąd. Przestrzeń nazw będzie miała wpływ klasy, funkcje oraz stałe.

namespace Foo;

class Bar
{
	public function baz()
	{
		$out = 'Przestrzen nazw: ' . __NAMESPACE__ . PHP_EOL
			 . 'Klasa: ' . __CLASS__ . PHP_EOL
			 . 'Metoda: ' . __METHOD__ . PHP_EOL;

		return $out;
	}
}

function funckja()
{
	return __FUNCTION__;
}

const STALA = 'abc';

Jeśli uruchomimy powyższy kod

$foo = new Foo\Bar();
echo $foo->baz();
echo Foo\funckja();
echo Foo\STALA;

uzyskamy w efekcie

Przestrzen nazw: Foo
Klasa: Foo\Bar
Metoda: Foo\Bar::baz
Foo\funckja
abc

W przypadku bardziej skomplikowanych projektów zachodzi potrzeba zagnieżdżania przestrzeni nazw. Definiowanie zagnieżdżonych przestrzeni nazw nie różni się niczym od “standardowych” przestrzeni. Nazwy kolejnych zagnieżdżeń oddzielamy, a jakże, backslashem.

namespace Foo\Bar\Baz;

Wszystkich, którzy czują się nieswojo bez klamer, ucieszy na pewno wiadomość, iż w przypadku przestrzeni nazw również możemy z nich korzystać.

namespace Foo
{
	/* klasy funkcje i stałe */
}

Zabawa z widocznością

Podobnie jak ma to miejsce w przypadku dołączania plików, przestrzenie nazw mogą spowodować zwiększenie ilości WTF na minutę. A to za sprawą sposobu w jaki PHP określa przestrzeń, w której się aktualnie znajdujemy. Jeśli nie straszne dla są zabawy ze ścieżkami plików, z tym również sobie poradzimy.

Manual wymienia trzy sposoby określania przestrzeni nazw wykorzystywanej klasy, funkcji lub stałej. Są to:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Vokiel, dodany: 30.01.2011 20:52, tagi: css

Autor wpisu: Michal Wachowski, dodany: 29.01.2011 00:47, tagi: php

W odwiecznej walce dobrego kodu z fuszerką, zawsze wygrywa prowizorka. Dziś, Kapitan Metoda wraz z przyjaciółmi prezentuje - klasę do robienia map stron w XML'u.

Autor wpisu: Zyx, dodany: 28.01.2011 12:09, tagi: php

Od kilku dni zajmuję się stopniową reaktywacją grupy Invenzzia. Jedną z rzeczy, która wymagała pilnego skodyfikowania, były zasady projektowania API oraz wykorzystywania poszczególnych elementów języka PHP w projektach. Celem jest podniesienie jakości kodu i poprawienie możliwości jego łączenia z innymi aplikacjami oraz bibliotekami. Programiści są różni, każdy ma jakieś swoje własne przyzwyczajenia, dlatego konieczne stało się spisanie zasad, co kiedy (nie) używać i dlaczego. Dzisiaj pragnę zaprezentować pierwszą wersję dokumentu do publicznej oceny.

Autor wpisu: Michal Wachowski, dodany: 27.01.2011 13:23, tagi: framework, mvc, php

Święta, święta i po świętach. Nim człowiek się nacieszył trzeba było wracać do roboty. Jako, że początek nowego roku to czas porządków - klienci, i ci starsi i ci obecni pragną by im coś zmodyfikować czy dobudować.W efekcie, większość czasu spędza

Autor wpisu: JoShiMa, dodany: 26.01.2011 19:25, tagi: skrypty

Skoro już zdefiniowaliśmy wszystkie pliki niezbędne bu nasz WordPress zaczął wyświetlać wpisy, pora na kolejny element, czyli panel boczny (ang. sidebar). Na początek kilka faktów. Po pierwsze zawartość zdefiniowana jest na ogół w pliku sidebar.php (odstępstwa od tej reguły pojawiają się wtedy gdy chcemy mieć więcej niż jeden panel boczny). Po drugie zawartość panelu bocznego [...]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.