ArchivePage 5 of 8

Statyczny konstruktor w PHP

W C# istnieje możliwość utworzenia statycznego konstruktora, który jest uruchamiany przy pierwszym odwołaniu do danej klasy. Wygląda to mniej więcej tak:

public class Foo
{
static Foo()
{
System.Diagnostics.Trace.Write(“Klasa Foo zostala zaladowana”);
}
}

Zdarza się, że podobna funkcjonalność przydałaby się w PHP, który jednak tej konstrukcji nie obsługuje. Można to jednak w prosty sposób “zasymulować” poprzez odpowiednie zmodyfikowanie “magicznej” funkcji __autoload() oraz dodanie statycznej metody do klasy, która będzie udawać konstruktora (w moim przykładzie użyłem nazwy staticConstruct).

class Foo
{
public function __construct()
{
// ‘normalny’ konstruktor
}

public static function staticConstruct()
{
echo ‘Klasa Foo zostala zaladowana’;
}
}

function __autoload($className)
{
// obsluga zaladowania klasy
// …
// …

if(is_callable(array($className, ’staticConstruct’)))
{
call_user_func(array($className, ’staticConstruct’));
}
}

Jak widać sposób implementacji jest wręcz trywialny. Niemniej pojawia się dwie kwestii, które trzeba wyjaśnić:

  • statyczny konstruktor jest publiczny przez co można wywoływać go w kodzie – można ten problem rozwiązać poprzez wprowadzenie odpowiedniego statycznego pola typu boolean, które będzie sprawdzane przez owy konstruktor – nie jest to do końca “eleganckie” rozwiązanie, niemniej innego sposobu nie dostrzegłem
  • statyczny konstruktor w klasie dziedziczącej nie musi (i nie jest to nawet wskazane) wcale wywoływać konstruktora z klasy nadrzędnej, bowiem zostanie on samodzielnie wywołany przez __autoload() w czasie ładowania klasy

Dragonfly alpha

Firebug jest jednym z najlepszych pluginów dla Firefoksa – jeśli nie w rankingu ogólnym, to na pewno ma uznanie wśród osób tworzących witryny. Dla IE powstał trochę ubogi (jak sama przeglądarka) Developer Toolbar, jednak brakowało jakiś porządniejszych narzędzi dla Opery.

Dragonfly

Od kilku dni sytuacja się trochę zmieniła. Po szumnych zapowiedziach w końcu mamy wersję alpha nowego dodatku dla owej przeglądarki – Dragonfly. Napisany w JavaScripcie i uruchamiany jako dodatkowe okno jest jednak trochę ‘przereklamowany’. Oczywiście zdaję sobie sprawę, że nie jest to wersja finalna i dużo się jeszcze zmieni, jednak liczyłem na ‘trochę więcej’. Czego mi brakuje?

  • większej integracji z samą przeglądarką – coś w stylu opcji ‘Inspect element’ w menu kontekstowym w Firefoksie+Firebug
  • edytowanie ‘na gorąco’ atrybutów elementów oraz arkuszy stylów
  • podglądanie wysyłanych/odbieranych danych (nagłówki HTTP, dane typu POST, żądania AJAX)

Jeśli powyższe punkty trafią do wersji finalnej, to myślę, że Dragonfly zostanie dobrym konkurentem dla Firebuga :-)

Acid3 – 100/100!

Najświeższy nightly-build Safari (31368):

acid3-safari.jpg

i dla kontrastu Internet Explorer 8 beta 1:

acid3-ie8.jpg

Komentarz chyba zbędny ;-)

spotBox

Korzystając z wolnego czasu oraz na prośbę szefa Playbacku, napisałem prosty skrypt wyświetlający w formie slajdów dowolną treść (boks “Gorące informacje” na gram.pl, czy oferta na polskiej stronie EA), zwany ponoć spotem. Skrypt korzysta z frameworka Script.aculo.us i choć jest prosty w swojej budowie, to jednak zdecydowałem się go opublikować, bo może nie tylko ja z niego będę korzystał ;-) zobacz demo »

Continue reading ’spotBox’