[PHP] Ustawienie short_open_tag = Off i zachowanie kodu zawartego w short open tagach.

Dzisiejszy wpis nie traktuje bezpośrednio o jakimś konkretnym problemie programistycznym, ale jest swojego rodzaju “niezapominajką” po pewnym problemie, na który natrafiłem podczas pracy nad jednym z projektów. Jako programista nigdy nie powinienem zakładać, że cokolwiek zachowa się “tak jak powinno”, a przynajmniej dopóki nie potwierdzą mi tego testy jednostkowe i podobne im narzędzia. Tym razem jednak złamałem tą zasadę, co w ramach bonusu przysporzyło mi kilku godzin szukania błędu… tam, gdzie go nie było.

[PHP] Zmienne zmienne, czyli słów kilka o mechanizmie variable variables.

Języki skryptowe, ze względu na swój charakter [kod, to tylko zwykły tekst, który zaczyna “coś” znaczyć dopiero w momencie interpretacji] mają praktycznie nieograniczone możliwości manipulacji stanem aktualnie przetwarzanego żądania, ze względu na to, że w dowolnym momencie możemy dołożyć żądany kawałek kodu poprzez funkcje typu require_once(). PHP jest jednym z takich języków, stąd nieobce są mu pewne “dziwne” na pierwszy rzut oka funkcjonalności. Być może zastanawiasz się, Czytelniku, czym są wspomniane w tytule “zmienne zmienne” - po lekturze tego artykułu na pewno nie będziesz zawiedziony informacjami wyniesionymi z niniejszego wpisu, więc serdecznie zapraszam do kliknięcia w link “Czytaj dalej”. ;]

[PHP] Zwracanie wielu wartości z funkcji.

Zaczynając przygodę z programowaniem każdy z nas otrzymał od swoich mentorów kilka informacji, które należało przyjąć za podstawę i z jako takimi aksjomatami po prostu nie dyskutować. Z reguły na początku kariery nikogo nie zastanawiają ani nie denerwują takie ograniczenia, stąd trwamy w naszym przeświadczeniu, że to, co robimy jest zgodne z jak najlepszymi technikami programowania. W dzisiejszym wpisie chciałbym nieco nagiąć jedną z tych reguł i pokazać Wam pewną sztuczkę czasem istotnie ułatwiającą życie, szczególnie podczas tworzenia kodu w języku PHP.

[PHP] Przekazywanie tablic w żądaniu GET.

Ten pomysł “wisiał” na mojej liście rezerwowej przez dosyć długi czas, czekając na dobrą okazję do podjęcia tematu. Ze względu na to, że zwykle dzielę się z Wami rozwiązaniami napotkanych przeze mnie błędów / problemów, stwierdziłem, że czas na “coś nowego” - coś, co przynajmniej raz na jakiś czas przełamie schemat. Dzisiejszy wpis będzie więc całkowicie poświęcony pewnej ciekawej funkcjonalności, która może dość istotnie ułatwić obsługę skryptów.

[PHP] Błąd: Call-time pass-by-reference has been deprecated.

Od pewnego czasu korzystam z pewnej bardzo ciekawej aplikacji pomagającego w zarządzaniu projektami. Redmine, bo tak jej “na imię” spełnia praktycznie wszystkie moje wymagania w tym zakresie, poza faktem, że jej wydajność jest “mocno średnia” [jest napisana w Ruby on Rails]. Dzisiaj jednak siadając przy komputerze stwierdziłem, że spróbuję czegoś nowego. Ze względu na to, że miałem przez chwilę styczność z polecanym przez jednego z kolegów OpenGoo zaprosiłem “na warsztat” właśnie ten “kawałek kodu”.

[PHP] Funkcje / metody o zmiennej liczbie parametrów.

Języki skryptowe mają to do siebie, że dzięki wprowadzonej abstrakcji interpretera możliwa jest o wiele szersza ingerencja w sposób działania już uruchomionego skryptu. PHP jest jednym z takich języków, stąd czasem potrafi zadziwić swoimi możliwościami, dając nam narzędzia zarówno bardzo pomocne jak i proste w użyciu. W niniejszym wpisie chciałbym Wam przedstawić jedno takie narzędzie - funkcje o zmiennej liczbie parametrów.

[PHP] Wstawianie wywołań funkcji w bloku HEREDOC.

Zazwyczaj podczas tworzenia klas implementuję w nich własne metody “podsumowujące” aktualny stan obiektu. W zdecydowanej większości przypadków to, co sam stworzę jest o wiele wygodniejsze w czytaniu niż np. wynik funkcji var_dump(). ;] Do tej pory podczas tworzenia takich metod korzystałem wyłącznie z konstrukcji echo i jej podobnych, jednak tym razem zdecydowałem się na ułatwienie sobie pracy i wykorzystanie składni HEREDOC, o której wcześniej tylko czytałem, a nie miałem okazji sprawdzić jej faktycznej przydatności.

[PHP, (My)SQL] Systemy uprawnień na stronach internetowych, część 0x03: Macierz uprawnień.

W ostatnich wpisach z tej serii skupialiśmy się na zarządzaniu uprawnieniami pewnych grup użytkowników naszej aplikacji. Obszary dostępu to nic innego jak podział na dwie sztywne grupy posiadające [lub nie] dostępu do pewnych zabezpieczonych elementów systemu, zaś poziomy to tylko wykorzystanie abstrakcji do złożenia w jednym miejscu wielu obszarów. Opisując te sposoby “celowo zapominałem” o tym, że nie zawsze da się podzielić użytkowników na odpowiednie grupy, ponadto nie zawsze nadane uprawnienia muszą być sztywne - czasem chcemy np. dać dodatkowo jednemu zaufanemu użytkownikowi dostęp do statystyk witryny, albo przeglądania artykułów - wtedy musielibyśmy stworzyć albo oddzielny obszar albo nowy poziom, który notabene zburzyłby dotychczas istniejącą strukturę. Co zrobić z takim problemem?

[PHP, (My)SQL] Systemy uprawnień na stronach internetowych, część 0×02: Poziomy użytkowników.

Przyznaję bez bicia, że od ostatniego wpisu w tej serii upłynęło [zbyt] wiele czasu, za co ponoszę winę jedynie ja, ponieważ dopisywałem po jedno - dwa zdania co jakiś czas, ale ogólnie post “wisiał” na liście szkiców i “grzał ławkę”, nie mogąc się doprosić o solidne dokończenie i wejście na “boisko” strony głównej niniejszego bloga. W związku z tym postaram się dzisiaj i za tydzień zamieścić ostatnie części, tak, aby można było zamknąć temat. Przy tworzeniu kolejnej tego typu serii będę musiał chyba od razu napisać wszystkie części i po prostu publikować je w pewnych odstępach czasu, bo w tym tempie to kolejny wpis ukazałby się pewnie w listopadzie. ;] Ale do rzeczy: w jednym z poprzednich wpisów omówiliśmy najprostszy system zarządzania uprawnieniami, czyli autoryzację na podstawie flagi dostępu do danej sekcji strony. Dzisiaj rozszerzymy to rozwiązanie pozwalając na większą kontrolę i możliwość konfiguracji miejsc, do których ma dostęp nasz użytkownik.

[PHP] Zapisywanie zserializowanych obiektów do sesji i błąd __PHP_Incomplete_Class.

W kwestii obsługi sesji i rodzaju zapisywanych w niej danych programiści PHP dzielą się na dwa skrajne fronty: tych, którzy preferują zapis wyłącznie typów prostych i tych, którzy nie widzą problemu w trzymaniu w niej całych obiektów. Ja stoję murem za typami prostymi, ponieważ wydaje mi się bardziej optymalne zapisywanie tylko niezbędnych informacji, na podstawie których ewentualne obiekty można odtworzyć, pozwala to też na zmniejszenie obciążenia serwera, bo odczytanie sesji wymaga deserializacji [odserializowania? deserializowania? kolejne "ciężkopolskie" słowo...] i parsowania o wiele mniejszego pliku. Jakkolwiek byśmy jednak do tego nie podchodzili, dzisiejszy wpis także może być argumentem in plus dla zapisywania wyłącznie zmiennych typów prostych, ponieważ jak mówi stare programistyczne porzekadło: "Serializujesz obiekty [do sesji]? No to masz problem!". ;]