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. ;]

PHP: Definiowanie klasy wewnątrz funkcji lub metody.

Język PHP zawiera w sobie dużo różnych “sztuczek”, przez co nasze życie może stać się o wiele łatwiejsze, ale istnieje możliwość, że zostanie przez nas znienawidzony do końca życia. W dzisiejszym wpisie chciałbym pokazać i wyjaśnić jedną z bardzo niejasnych i bardzo brzegowych kwestii, jaką jest zachowanie zasięgu zmiennych podczas przechodzenia do innych plików [np. w przypadku ich includowania]. Zapraszam do lektury. Fotografia: Milian Wolff, CC-BY.

TL;DR.

Nie da się zdefiniować klasy ani wewnątrz funkcji, ani wewnątrz metody. Jeśli chcesz wiedzieć dlaczego - czytaj dalej.

PHP: Definiowanie klasy wewnątrz funkcji lub metody.

Rozważmy następującą sytuację:

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: