Gettery i settery w PHP

Najpopularniejszym paradygmatem programowania jest programowanie zorientowane obiektowo. Obiekt posiada jakieś właściwości, które [IMO] najczęściej powinny być prywatne. Warto by było móc się do nich jakoś odwoływać, czy to podczas zapisywania danych, czy też w celu odczytu. Do tego bardzo przydatne okazać się mogą funkcje popularnie zwane getter („akcesor” – pobierająca dane) bądź setter („mutator” – ustawiająca).

W tym wpisie postaram się pokazać kilka możliwych podejść do tego zagadnienia.

Czytaj dalej Gettery i settery w PHP

Zmniejszenie liczby requestów dla plików JS

Niedawno pokazałem, jak z wykorzystaniem JSMina sprawić, aby pobierane pliki JS były mniejsze. W tym wpisie pokażę, co zrobić, aby ograniczyć liczbę requestów HTTP przy ładowaniu plików JS.

Powolne ładowanie strony

Aby strona ładowała się szybciej, można zrobić dwie rzeczy:

  1. Zmniejszyć jej rozmiar – im mniej KB do pobrania, tym szybciej się to stanie.
  2. Zmniejszyć liczbę odwołań do serwera. Jedno odwołanie żądające 100KB będzie działać szybciej niż 10 żądań po pliki 10KB każdy.

W przypadku JS punkt pierwszy można rozwiązać albo pisząc krótsze skrypty (lub rezygnując z nich), albo zmniejszając rozmiar kodu wynikowego.

Czytaj dalej Zmniejszenie liczby requestów dla plików JS

Kompresja kodu JS

JavaScript jest językiem skryptowym. Zamiast kompilacji, podczas której kompilator może [i najczęściej to robi] dokonać optymalizacji, w JS istnieje jedynie interpretacja [w trakcie wykonania]. Powoduje to, że o ile nazwanie zmiennej

[javascript]var obiekOdpowiedzialnyZaFunkcjonalnośćABC; // tu komentarz[/javascript]

w normalnych przypadkach uznalibyśmy za coś poprawnego, to w JS jest dobre tylko na czas prac deweloperskich. Później spowalnia naszą stronę. Zobaczmy wady i zalety.

Zalety:

  • kod jest samokomentujący. Nazwa zmiennej mówi do czego ma być używana
  • komentarz dodatkowo może tłumaczyć zawiłości lub dziwne przypadki

Czytaj dalej Kompresja kodu JS

Geocode reverse

Mapy google są coraz popularniejsze w internecie. Ich dokumentacje można znaleźć pod adresem: http://www.google.com/apis/maps/documentation/

Niestety w dokumentacji tej brakuje bardzo przydatnej funkcji – otrzymywania nazwy miejscowości, gdy znane są współrzędne geograficzne. Na szczęście są możliwości rozwiązania tego problemu.

Opcja ta nazywa się geocode reverse i jest udostępniana przez różne firmy np. http://ws.geonames.org/findNearbyPlaceName?lat=52&lng=20&maxRows=1

Czytaj dalej Geocode reverse

„Silne typy” w PHP

PHP jeszcze do niedawna nie miał wcale kontroli typów, teraz to się już trochę zmieniło. Ja jednak uważam, że dla języka skryptowego, który nie jest kompilowany są lepsze sposoby na „wymuszenie” typu niż podawanie go jawnie. Jak? Zapraszam do lektury.

Na początek

Problem z typami

PHP jak to język skryptowy nie posiada silnej typizacji. Do zmiennej można przypisać cokolwiek i nie powoduje to błędu. To, że nie powoduje to błędu składniowego to dobrze. Ale co z logiką. przykładowy kod:

Czytaj dalej „Silne typy” w PHP

Książka „Smarty. Szablony w aplikacjach PHP”

Okładka Smarty Każda większa witryna potrzebuje wsparcia nowoczesnych technologii. Dzisiejsze realia sprawiają, że strony należy tworzyć modułowo, tak by za każdy fragment projektu, mogły odpowiadać inne osoby. I tym sposobem należy całkowicie oddzielić zadania projektanta strony, od programisty. Szablony Smarty pozwalają to zrobić tak jak CSS+XHTML pozwalają oddzielić strukturę strony (XHTML) od opisu wyglądu (CSS).

Czytaj dalej Książka „Smarty. Szablony w aplikacjach PHP”

„Przeciążanie” konstruktora

Ktoś się może nawet oburzy, że o czym ja tu piszę. Przecież w PHP nie ma przeciążania znanego z C / Javy. Istnieje co prawda coś, co jest nazywane „przeciążaniem„, jednak działa na innej zasadzie. Ja jednak nie znalazłem innej nazwy. No może „statyczne przeciążanie konstruktora”. Zaraz postaram się wyjaśnić, o co mi chodzi.

Na początek

  • podstawowa wiedza o PHP5 (konstruktory, pola statyczne)
  • serwer www (może być lokalny, np. WAMP)

Zwykła klasa

Oto kod zwykłej klasy, która obudowuje funkcję fopen:
Czytaj dalej „Przeciążanie” konstruktora

Czytelne instrukcje warunkowe

Prosta instrukcja `if’ czy `switch’. No przecież tu nie da się zrobić niczego lepiej. No, niekoniecznie. Da radę i zaraz to pokażę.
Przykłady będą w PHP, ale odnosi się do większości języków.

Instrukcja if

Myślę, że nie potrzebuje zbyt długo tłumaczyć jak działa if. Ale chciałbym pokazać, co można zrobić, aby był czytelniejszy. Pamiętaj – kod pisze się raz, a czyta wiele razy. Warto zatem odpowiednio go napisać.

Czytaj dalej Czytelne instrukcje warunkowe