Podstawy typów danych w PHP

04 marca 2010

PHP ma bardzo liberalne podejście do typów danych jakich możemy używać. Dzięki dynamicznemu rzutowaniu typów nie musimy się bawić w żadne deklaracje typu tuż przy inicjacji zmiennej. Zmieni się on automatycznie gdy przypiszemy do tej zmiennej jakąś wartość. W jednej chwili zmienna może być typu string aby po chwili ta sama zmienna zwracała jako typ integer.

Oczywiście są zwolennicy i przeciwnicy takiego rozwiązania. Na pewno dla niektórych brak konieczności deklarowania i zapamiętywania typu każdej zmiennej to duży plus. Z drugiej strony robi nam się lekki bałagan (programiści potrafią zrobić niezły bajzel gdy nie są dyscyplinowani przez język w którym piszą), łatwiej o pomyłkę i powstaje wiele pytań kiedy tak naprawdę zmienna jest pusta, kiedy zwróci FALSE itd.

Dwóch pierwszych problemów nie rozwiążemy, co do trzeciego to przyda nam się ściągawka. Taka jak na stronie www.blueshoes.org/en/developer/php_cheat_sheet/. Znajdują się tam ładne i wygodne w użytkowaniu tabelki, które obrazują różnice między zmiennymi z przypisanymi różnymi wartościami, jak na te wartości reagują wbudowane funkcje PHP oraz który warunek if będzie prawdziwy przy użyciu == a który przy użyciu ===.

Polecam się z tym zapoznać, może to Was uchronić przed wieloma błędami logicznymi w Waszych skryptach. A jak wiemy, takie są często bardzo trudne do wykrycia…

Przy okazji wyrażę swoje zdanie na temat tego, że PHP automatycznie zmienia typ danych.

Przyznam, że mam co do tego mieszane uczucia. W swoich skryptach staram się unikać sytuacji gdy zmienna bez jakiegoś szczególnego powodu zmienia swój typ. Co więcej, możliwość takiej automatycznej zmiany sprawia, że czasami mam tylko więcej pracy przy zabezpieczaniu swoich stron.

Z drugiej strony konieczność deklaracji typu także nastręczałaby problemów. Zawsze musielibyśmy pamiętać o typie i asekuracyjnie sprawdzać czy jest prawidłowy przy przypisywaniu wartości do zmiennej bo inaczej wygenerujemy błąd.

Jeżeli miałbym decydować o najbliższej przyszłości języka PHP to chciałbym aby wprowadzono możliwość deklarowania typu. Nie konieczność a możliwość. Tak abym mógł przy inicjacji zmiennej zadeklarować jej typ i zmienić go tylko za pomocą dostępnych funkcji rzutowania. Zmienne bez deklaracji typu zachowywałyby się tak jak dotychczas. Czekam aż ktoś się przyczepi do tego pomysłu :P

Dodaj komentarz

11 odpowiedzi dla tego wpisu

  1. mati napisał:

    To ja się doczepie. Wydajność parsera.

  2. MariuszT napisał:

    Bardzo możliwe ale to już temat na zupełnie inną dyskusję. Bardziej miałem na myśli czepianie się logiczności czy użyteczności takiego rozwiązania.

  3. Ewidentny napisał:

    Chłopie,
    a może byś tak w Captcha/reCaptcha zainwestował ?

  4. MariuszT napisał:

    Chłopie, a może byś tak zajął się czymś pożytecznym zamiast bezsensownie spamować blogi innych? Chłopie… ?

  5. Michał napisał:

    Gdyby PHP był językiem kompilowanym to z pewnością jego twórcy udostępnili by taką funkcjonalność. Popieram Matiego — PARSER.

    Chociaż w PHP parser nie jest taki zamulający. Jak ładują po 100 modułów to się trzyma jeszcze :)

  6. Bescer napisał:

    Przepraszam, że się wtręce, ale czy istnieje mechanizm captcha do WordPressa? Ten sam „Ewidentny” również mi spamuje blog…

  7. MariuszT napisał:

    @Bescer http://wordpress.org/extend/pl.....?q=captcha albo od razu to http://recaptcha.net/plugins/wordpress/. Z żadnego nie korzystałem więc nie wiem, który najlepszy ale reCAPTCHA najpopularniejsza i sprawdzona.

  8. Dunerple napisał:

    Czemu tak rzadko (co miesiąc) robisz wpisy do bloga? Z poważaniem, bo naprawdę miło Ciebie się czyta.

  9. MariuszT napisał:

    Chętnie pisałbym częściej, nawet codziennie. Lubię to i mam wiele tematów, które chciałbym poruszać. Tylko kiedy znaleźć na to czas… ?

  10. kupek napisał:

    YYY EEE? co to jest?

  11. MariuszT napisał:

    Jak to co? Spam… Już usunąłem.

Odpowiedz



Podobne wpisy: