Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kontrola typów danych
Forum PHP.pl > Forum > PHP > Object-oriented programming
Aztech
To może na początek tak, czytałem w maualu php5 o typach danych.
Przejrzałem też o funkcjach i nie znalazłem intereującej mnie odpowiedzi.
Mianowice z tego co mi wiadomo w php5 nie ma de facto bardzo ścisłej kontroli typów danych. Jaka jest zatem różnica czy zapiszę zmienną z jej typem:

  1. <?php
  2.  
  3. public function __construct(int $id){
  4. /* kod */
  5. }
  6.  
  7. ?>


czy też tak

  1. <?php
  2.  
  3. public function __construct($id){
  4. /* kod */
  5. }
  6.  
  7. ?>


poza tym, że kod jest czytelniejszy i także dzięki temu pierwszemu w Zend Developement 5 mam ułatwienie w pisaniu komentarzy zgodnie ze standardech phpDocumentator?
chmolu
  1. <?php
  2. public function __construct(int $id)
  3. ?>

to spowoduje błąd parsera.

'type-hinting' może być stosowany tylko do klas i interfejsów. Dodatkowo, od php5.1 można też uzyć tego do tablic:
  1. <?php
  2. public function __construct(array $array)
  3. ?>
Ludvik
Tak jak napisał chmolu plus...

Ścisła kontrola istnieje, tyle że musi być wymuszona. Kiedy poprosisz o konkretny typ obiektu/tablicę, to otrzymasz właśnie ten typ albo błąd... Stosuj kontrolę typów kiedy to tylko możliwe...
Aztech
Swoje pytanie zadałem właśnie nie bez powodu. Podczas pisania klasy i tuż po zainstalowaniu Zend 5 (w Zend 4 tego nie było) okazało się, że po napisaniu klasy i zastosowaniu kompntazy tak jak to zalecane jest w phpDocumentatorze pojawił się cału blok z opisem @param unknowntype $nazwa_zmiennej.

Spróbowałem więc wpisać w parametrach metod typy zmiennych (tutaj dla przykładu integer) i wtedy "code complementary" uzupełniło mi wpis na @param integer $nazwa_zmiennej sparsowałem w Zendzie i nie wyskoczył mi żaden warning.

Zgadzało by się to w przypadku tego co pisał chmolu.
Może macie jakiś link do artykułu o tym albo coś w tym stylu (dzięki temu uniknąłbym w kodzie wielu sytuacji z gatunku is_integer. Dzięki
em_pl
Aztech:
Integery np możesz rzutować (int)$zmienna.

W ogóle chciałbym przy okazji zapytać co sądzicie o tej formie narzucania typu?
splatch
Można to obsłużyć ręcznie przez gettype" title="Zobacz w manualu php" target="_manual.
dr_bonzo
Cytat
Swoje pytanie zadałem właśnie nie bez powodu. Podczas pisania klasy i tuż po zainstalowaniu Zend 5 (w Zend 4 tego nie było) okazało się, że po napisaniu klasy i zastosowaniu kompntazy tak jak to zalecane jest w phpDocumentatorze pojawił się cału blok z opisem @param unknowntype $nazwa_zmiennej.

Spróbowałem więc wpisać w parametrach metod typy zmiennych (tutaj dla przykładu integer) i wtedy "code complementary" uzupełniło mi wpis na @param integer $nazwa_zmiennej sparsowałem w Zendzie i nie wyskoczył mi żaden warning.


Bo Zend sprawdza tylko skladnie, nie sprawdza czy istnieje klasa "integer" -- choc (chyba) mozna taka utworzyc wiec dlatego nie pluje warningami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.