Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: cojack, dodany: 01.02.2011 13:54, tagi: javascript

Programowanie w JavaScript w cale nie musi być nudne, trudne i wkurzające. Wystarczy się pilnować i nie popełniać prostych błędów. Bo te trudniejsze łatwiej wyłapać niż te banalne, których nie widać na pierwszy rzut oka. O czym będzie dzisiejszy wpis? O obiektach w JavaScript, a bardziej o literal notation, czyli definicji obiektów liniowo. Ciekawy sposób tworzenia obiektów w JS.

Na początku musimy sobie coś uświadomić: „W JavaScript nie ma klas”.

Jeżeli już to rozumiemy, możemy przejść do dalszej części czytania tego wpisu.

Scope – Zasięg

Wiele razy zastanawiamy się czym w danej chwili jest „this” w funkcji, jeżeli używamy jakiś callbacków i bindujemy pewną funkcję z obiektu w taki sposób:

$('#some_id').click(function(){
  console.log(this); // z użyciem firebuga
});

no to w zakresie funkcji this bedzie obiektem #some_id

Dobra teraz musimy sobie coś wyjaśniać podanie nazwy a wywołanie funkcji to dwie różne rzeczy!

Czyli:

 someCallback: someObject.someFunction(); // WYWOŁANIE!
 someCallback: someObject.someFunction; // zbindowanie

I teraz jeżeli napiszemy za pomocą pierwszego przykładu, to skrypt kiedy dojdzie do tej linijki wywoła ją, a nie przypisze, a w drugim wykona ją poprawnie dopiero przy wywołaniu callbacka. I czym jest this w takiej funkcji? Ciekawa sprawa, bo mimo wszystko iż ta funkcja jest metodą obiektu to

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

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

Pamiętacie jeszcze w jaki sposób kolorowana była składnia PHP w jednym z ostatnich wydań Eclipse? Przede wszystkim była przejrzysta. Wraz z pojawieniem się ostatniej wersji tego narzędzia, kolory uległy radykalnemu pogorszeniu, co spowodowało, że kod stał się nieczytelny. Jedyne co można było zrobić to samemu mozolnie zmieniać kolor każdego elementu. Na szczęście ktoś wpadł na genialny pomysł i stworzył galerię kolorów. Mowa oczywiście o tytułowym serwisie Eclipse Color Themes, oferującym kilkadziesiąt gotowych schematów kolorów, które możemy pobrać i kilkoma kliknięciami zainstalować. Oprócz przygotowanych schematów mamy również możliwość pobrać wtyczkę do Eclipse’a, która w bardzo prosty sposób pozwala zmieniać aktualny układ kolorów. Niestety nie jest ona dopracowana i lubi zgłosić wyjątek podczas zmiany schematu.

Jak proste jest korzystanie z gotowych schematów kolorów, możecie obejrzeć na krótkim filmie instruktarzowym.

How to import Eclipse Preferences (*.epf) from Roger Dudler on Vimeo.

Autor wpisu: Michal Wachowski, dodany: 01.02.2011 00:45, tagi: javascript

3D to to nie jest, nigdy nie było i nie będzie. Po prostu robi wrażenie głębi. Prosty efekt, zeralizowany za pomocą JavaScriptu (prototype.js)

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.
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.