Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kontrola typów danych, w sumie głupie ale ważne
Aztech
post 14.12.2005, 22:10:34
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
chmolu
post 14.12.2005, 22:54:53
Post #2





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
Ludvik
post 14.12.2005, 23:50:16
Post #3





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Aztech
post 15.12.2005, 01:12:00
Post #4





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
em_pl
post 14.09.2006, 11:17:44
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 10.12.2005
Skąd: Stalowa Wola / Wroclaw

Ostrzeżenie: (0%)
-----


Aztech:
Integery np możesz rzutować (int)$zmienna.

W ogóle chciałbym przy okazji zapytać co sądzicie o tej formie narzucania typu?


--------------------
Go to the top of the page
+Quote Post
hwao
post 14.09.2006, 11:32:22
Post #6


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




http://blog.dywicki.pl/2006/06/29/podpowia...rostych-w-php5/
Go to the top of the page
+Quote Post
splatch
post 16.09.2006, 23:17:57
Post #7





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Można to obsłużyć ręcznie przez gettype" title="Zobacz w manualu php" target="_manual.


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
dr_bonzo
post 17.09.2006, 00:14:06
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


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.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2025 - 22:07