W tym krótkim wpisie chciałbym zaprezentować Wam parę ciekawostek związanych z językiem PHP. Pomimo faktu, iż programuje w nim już dość długi okres czasu, to nadal potrafi mnie czymś zaskoczyć. Zatem zapraszam do lektury.

ciekawostka numer 1

Na pierwszy rzut oka poniższy skrypt nie jest poprawny i wydawać się może, że jedynym wynikiem jego wykonania powinien być komunikat błędu – a tu niespodzianka. ODRADZAM KORZYSTANIE!. Popatrzmy:

echo jestem;

Na wyjściu otrzymujemy:
jestem

ciekawostka numer 2

Aby dostać się do konkretnej wartości tablicy asocjacyjnej, należy podawać klucze w apostrofach. Oczywiste, prawda? Można pójść na skróty (co nie jest zalecane).ODRADZAM KORZYSTANIE!. Spójrzmy:

$tab = array('a'=>345,'b'=>34);
echo $tab[a];

Wypisze:
345

UWAGA!
Obie przedstawione perełki generują błąd E_NOTICE, który przy domyślnych ustawieniach w pliku php.ini nie jest wyświetlany.

ciekawostka numer 3

Instrukcje include i include_once mogą zwracać wartości z plików przez nie załączanych. Skrypt first.php:

echo include 'second.php';

Natomiast second.php:

return 4;

Wynik uruchomienie first.php:

4

ciekawostka numer 4

Istnieje możliwość dynamicznego dodawania właściwości obiektom klas. Zobaczmy:

class MyClass {

}

$obj = new MyClass();
$obj->a = 4;
$obj->b = 5;
unset($obj->a);
var_dump($obj);

Po wykonaniu:
object(MyClass)#1 (1) { ["b"]=> int(5) }

I to tyle. Mam nadzieje, że chociaż jednej z „perełek/ciekawostek” nie znaliście.

13 Odpowiedzi : “„perełki” php”

  1. Pierwsze dwie perelki to niechlujstwo, a stosowanie podobnych praktyk jest niebezpieczne.
    Jesli po jakims czasie bedziesz chcial dodac stala lub zmienna a czy jestem, to bedziesz mial caly kod do przepisania.
    W pierwszym przypadku jestem traktowane jest jako stala (constant).

  2. Ralf napisał:

    Tak tak, należy zdecydowanie tego posta traktować z przymrużeniem oka – jako czystą ciekawostką.

  3. Witam, znalazłem Twojego bloga w Google i też chciałbym skrobnąć parę słów komentarza. Co do pierwszych dwóch przykładów, to zgadzam się z przedmówcami, że jest to błąd w sztuce i tak się robić nie powinno. Nie jest to żaden hack IMO, po prostu działanie parsera PHP, który próbuje jak może dobrze zinterpretować kod. ;] Co do trzeciej perełki – ta jest akurat dosyć ciekawa, chyba zrobię sobie jakieś demko, żeby zobaczyć jak to dokładnie działa. A ostatni „hack” z listy nie jest akurat niczym specjalnym – w tym wypadku po prostu jet wywoływana magiczna metoda __set() i tyle. Chyba, że się nie wie nic o magicznych metodach albo nigdy nie programowało się w JavaScripcie, wtedy faktycznie wygląda to zastanawiająco.

    Pozdrawiam!

  4. BTW. Ustaw kolor tekstu na blogu na trochę ciemniejszy, bo oczy bolą od tego jasnego szarego. ;]

  5. kosmowariat napisał:

    Drogi autorze, takie hacki są dla bardzo początkujących (nie-)programistów. IMHO, jeśli ktoś widzi to poraz pierwszy powinien się jeszcze dużo nauczyc

  6. Ralf napisał:

    Więc jak już pisałem w komentarzu pierwsze dwie ciekawostki – co teraz zaznaczyłem jeszcze wyraźniej w samym poście nie należy stosować.

  7. W pierwszym przypadku parser PHP szuka stałej o nazwie ‘jestem’, a w drugim stałej o nazwie ‘a’. Jeśli takowej nie znajduje wypluwa NOTICE.

    Instrukcję include wykorzystuję akurat bardzo często. Jeśli np. w pliku foo.php umieścisz kod <?php return array(‘a’,'b’); to później tę tablicę możesz przypisać do zmiennej w sposób $arr = include foo.php;

    Czwarty przypadek to bynajmniej nie wywołanie funkcji magicznej __set bo w PHP4 też to działa, a jak wiadomo magia narodziła się wraz z 5 wersją PHP. W sumie skoro w PHP nie trzeba deklarować zmiennych to niby dlaczego miałby być obowiązek deklarowania właściwości w klasie ;) .

  8. Adam napisał:

    Dlaczego autor bloga znając się na PHP korzysta z wordpress

    • Lukasz napisał:

      Pewnie z tego samego powodu z którego programiści piszący w językach niższego poziomu używają gotowych systemów operacyjnych, nie pisząc własnych. Szybciej postawić WordPressa niż pisać własny system. Stabilniej, skuteczniej, bezpieczniej itd…
      RalFie, bardzo fajny blog :)
      Pozdrawiam i życzę chęci do dalszego pisania.

  9. RalF napisał:

    Zgodnie z zasadą „nie wymyślaj na nowo koła”, skorzystałem właśnie z WordPress’a. Prowadzenie bloga to moje hobby, a nie posiadam niestety wystarczającej ilości czasu, by zaimplementować tutaj autorskie rozwiązanie. Jestem też w pełni świadomy zalet i wad zastosowanego skryptu. Jeśli ktoś uważa, że jest to przejaw braku profesjonalizmu z mojej strony, pozostaje mi się ów opinię przyjąć z pokorą do wiadomości.

  10. Piotr napisał:

    Gdyby nikt nie próbowałby wymyślać koła od nowa, mielibyśby kamienne koła w samolotach odrzutowych…. o ile by się oderwały od ziemi.

  11. RalF napisał:

    Już tłumaczę. Miałem na myśli samą ideę koła, a nie sposobu jego wykonania. Podejmując określoną decyzję implementacji, rozważa się wszystkie stawiane wobec niego wymagania: bezpieczeństwo aplikacji, jej wydajność, skalowalność i elastyczność rozwiązania, czas wdrożenia i np. usability klienta końcowego.

    Przyznaje – w swoim życiu koło wynajdowałem nie raz. Jest to proces niezbędny (moim skromnym zdaniem), aby dogłębnie i szczegółowo poznać zasady programowania w konkretnym języku.

    Obawiam się, iż skrupulatne omówienie poruszonej tematyki, nadaje się na spotkanie przy piwku :)

Pozostaw Odpowiedź