symfony: Pobieranie tablic z obiektów klasy sfOutputEscaperArrayDecorator.

Framework symfony, jak praktycznie każdy na rynku ma swoje “smaczki”, które czasem umilają, a czasem bardzo utrudniają tworzenie kolejnych funkcji projektu - zamiast zająć się właściwą pracą musimy przeszukiwać strony manuala i “czeluści” Internetu, aby znaleźć Jedyną Słuszną ™ drogę wykonania danego zadania. W dzisiejszym wpisie chciałbym pokazać, w jaki sposób “dobrać się” do “niewyescape’owanych” danych [konia z rzędem temu, kto poda dobre polskie tłumaczenie tego terminu ;]] tablicy zamkniętej w kontenerze klasy sfOutputEscaperArrayDecorator.

symfony: Przekazywanie dodatkowych danych do klasy formularza.

Komponent formularzy frameworka symfony jest naprawdę bardzo potężnym narzędziem, pozwalającym na tworzenie zaawansowanych rozwiązań przetwarzających dane pochodzące od użytkownika na odpowiednią formę. O ile przetwarzanie formularza zazwyczaj sprowadza się do operacji na przesłanych do niego danych, o tyle czasem potrzebujemy innych, zawartych poza jego polami. W dzisiejszym wpisie chciałbym pokazać, w jaki sposób przekazać te dodatkowe dane do klasy naszego formularza. Zapraszam do lektury.

 

symfony: Błąd: "Catchable fatal error: Argument 1 passed to sfForm::bind() must be an array, string given".

Witajcie ponownie. Ostatnio pracuję nad pewnym projektem opartym o symfony, w związku z czym po raz kolejny mam okazję pomęczyć się trochę z jego wszystkimi zawiłościami. Dzisiejszy problem trochę mnie zdziwił, ponieważ nie spodziewałem się tego typu restrykcji ze strony frameworka, stąd też tradycyjnie szukałem błędu nie tam, gdzie powinienem. Na szczęście udało mi się znaleźć rozwiązanie, stąd też miło mi po raz kolejny ogłosić, że będę mógł podzielić się z Wami rozwiązaniem. ;]

symfony: sfValidatorAnd i problem z ignorowaniem właściwości "required" komponentów wewnętrznych.

Realizuję w tym momencie bardzo przyjemny projekt - przyjemny dlatego, że powstaje “od zera” i mam możliwość wyboru narzędzi, w jakich będę go tworzył. Chciałem spróbować wykorzystać do tego testowany od pewnego czasu framework Symfony2, jednak idąc za radą udzieloną mi przez batmana podczas konferencji 4Developers wracam na “stare śmieci”, czyli stabilną wersję symfony. Jak to bywa przy powrotach - zazwyczaj pojawiają się problemy z ponownym “zgraniem się” programisty z kodem. Tym razem padło na mechanizm walidacji formularzy, który nie do końca chciał współpracować.

Problem: sfValidatorAnd i właściwości “required” komponentów wewnętrznych.

Walidacja formularzy w symfony odbywa się poprzez odpowiednie skonfigurowanie listy walidatorów dla każdego pola. Dostępnych jest wiele tzw. “widgetów” opisujących różne typy pól, a także wiele różnych, mniej lub bardziej ogólnych walidatorów testujących konkretne wymagania dotyczące przetwarzanych danych.

PHP: Funkcja sprintf() przyjmująca zmienną liczbę argumentów.
Pisząc framework będący tematem pracy inżynierskiej w pewnym momencie musiałem zmierzyć się z problemem wyświetlania i formatowania przyjaznych komunikatów o błędach wykonania. Przyjaznych nie dla użytkownika, lecz dla programisty tworzącego stronę internetową, co trochę utrudniło problem, ponieważ wiadomości w stylu “strona jest chwilowo niedostępna” nie są zbyt informatywne. W dzisiejszym wpisie chciałbym się z Wami podzielić sposobem, w jaki udało mi się ten problem rozwiązać. Wstęp: Przekazywanie danych i formatowanie komunikatów.
PHP: Błąd "Can't use function return value in write context".

W pracy programisty czasem zdarzają się sytuacje, kiedy pomyłka nie wynika z niewiedzy ani braku doświadczenia osoby piszącej, ale zwykłego zagapienia się i postawienia “innego znaczka” w miejsce tego poprawnego. Tego typu błędy potrafią być bardzo uciążliwe, ponieważ wydaje nam się, że napisaliśmy wszystko poprawnie i bezskutecznie szukamy błędu wpatrując się w kilka linijek, które po prostu “muszą działać”. W dzisiejszym wpisie chciałbym przedstawić problem, który może utrudnić pracę, szczególnie, jeśli jesteśmy już zmęczeni i nie dostrzegamy wszystkich szczegółów na ekranie.

Błąd: Can’t use function return value in write context.

Weźmy pod uwagę poniższy kod:

PHP: Dynamiczne tworzenie zmiennych na podstawie indeksów tablicy.

Podczas pisania kodu czasami natrafiamy na sytuację, gdzie potrzebne informacje znajdują się w mało wygodnym dla nas kontenerze. O ile tablice w języku PHP są jednym z najprostszych w wykorzystaniu kontenerów, jakie do tej pory widziałem, ciągłe wykorzystywanie konstrukcji $arr[‘sth’] potrafi zmęczyć nawet bardzo wytrwałego programistę. W dzisiejszym wpisie chciałbym przedstawić dwie techniki pozwalające na uniknięcie tego typu utrudnień.

Problem: $arr[‘index0’], $arr[‘index1’]…

Problem polega na tym, że podczas odwoływania się do informacji zawartych w tablicy… musimy odwołać się do tablicy:

PHP: Indeks tablicy może być tylko liczbą całkowitą lub ciągiem znaków.

Dzisiaj znowu sobie ponarzekam na PHP, bo znowu odkryłem pewną bardzo dziwną “funkcjonalność” tego języka. Jak wszyscy wiemy udostępnia nam on konstrukcję array(), dzięki której możemy tworzyć dowolne zbiory danych, znane w programowaniu jako tablice, lub, wśród programistów PHP - jako arraye [wym. “araje” ;]]. Okazuje się, że w tak “dowolnej” konstrukcji, niestety nie wszystko jest “dowolne”, a już na pewno nie typy danych, które mogą być używane jako indeksy.

Problem: nie wszystko indeks tablicy, co zawiera zmienna.

Otóż, pewnego pięknego dnia stwierdziłem, że napiszę jakiś ciekawy skrypcik, oczywiście w PHP. Po krótkim zastanowieniu i przeiterowaniu po liście potencjalnych CPNS [Ciekawych Pomysłów Na Skrypty] stwierdziłem, że najciekawszym na daną chwilę pomysłem będzie rysowanie wykresów i wysyłanie do przeglądarki obrazka wynikowego. Techniczne sprawy [tak, użyłem GD] pominę, ponieważ nie są istotne.

[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.

Wstęp.

Jedną z takich “niedyskutowalnych” rzeczy była dla mnie przekazywana od początku informacja o tym, że wynik funkcji / metody to zawsze jedna wartość / zmienna. Nawet brak tej wartości można było uznać za wartość, ponieważ w Pascalu [który był pierwszym językiem programowania jaki poznałem] paradygmat proceduralny był realizowany za pomocą dwóch elementów - procedur [nie zwracających wartości, odpowiednik funkcji zwracających void w C / C++] i funkcji [które “coś” zwracały], także nawet było to podzielone na dwa oddzielne byty.

[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. Wstęp. Buszując po bezkresach Internetu staram się zaobserwować możliwie jak najwięcej sposobów wykonania stron, zarówno od strony wizualnej [frontend - szablony], jak i tej bardziej “serwerowej” [backend - oczywiście na tyle, na ile się da].