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.

[WampServer] Błąd: The configuration file contains a syntax error on line n: [EParseError] Invalid Section tag.

Jakiś czas temu miałem nieodpartą chęć spróbowania nowych funkcjonalności, jakie wprowadzono w PHP 5.3. Przestrzenie nazw oraz late static binding, to tylko niektóre z bardzo przydatnych nowości - na pewno doceni to niejeden programista. Jednak ze względu na fakt, że życie w moim [naszym? ;]] zawodzie nie jest usłane różami, nawet sama aktualizacja instalacji serwera lokalnego przysporzyła trochę problemów. Jednym z nich jest błąd w plikach konfiguracyjnych, którego naprawę opiszę dzisiaj.

[Linkdump #13] CSS, czyli Co Się Stało z moim stylem? ;]

Nie będę specjalnie ukrywał faktu, że dla mnie, programisty siedzącego po stronie serwera, jedną z najbardziej uciążliwych rzeczy do zrobienia przy projektowaniu strony internetowej jest przygotowanie szablonu - frontendu. Nie byłoby jeszcze tak źle, gdyby wystarczył sam HTML - w końcu nawet najbardziej oporne przeglądarki rozumieją pewne standardy kodu, aczkolwiek problem jest z samym wyglądem tejże struktury, bo z CSSem już nie jest tak fajnie. W dzisiejszym Linkdumpie chciałbym więc przekazać w Wasze ręce zbiór linków pomagających przy najczęstszych / najciekawszych problemach z tym związanych.

[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] 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!“. ;]

[Symfony] Błąd: "You must be in a symfony project directory".

Zaliczyłem już większość przedmiotów i coraz wyraźniej widzę, że chyba w sesji będę mógł w końcu odpocząć. Zostały jednak jeszcze dwa projekty do zrobienia, co zajmuje całkiem sporo czasu. Najgorsze jest to, że te projekty nie są specjalnie trudne, po prostu nie mogę się zmusić, żeby popracować dłużej i bardziej produktywnie. W każdym razie cały czas “dłubię” we frameworku Symfony, więc niech nie zdziwi Was kilka kolejnych wpisów na ten sam temat - na pewno kiedyś Wam się przydadzą. ;] Dzisiaj także ze względu na ograniczony czas porada będzie krótka i prosta. Ale już w lutym obiecuję być bardziej produktywny [oczywiście jeśli będę przy komputerze] i dokończyć te wpisy, które cierpliwie czekają jako szkice. Ale do dzieła: