Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> niezgodność typów argumentów metody, error: must be an instance of string, string given - wtf?
Can I
post 20.04.2007, 19:14:05
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 7.06.2006
Skąd: Coventry, UK

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


cześć,

mam interfejs:
  1. <?php
  2. interface UserDAO {
  3.  
  4. public function findUsersByFornameSurnameOrEmail( string $queryStr );
  5.  
  6. }
  7. ?>


i implementację w MySQLUserDAO. testuję to sobie i dostaję taki błąd:

Cytat
Argument 1 passed to MySQLUserDAO::findUsersByFornameSurnameOrEmail() must be an instance
of string, string given, called in (...)


wywołanie w teście wygląda tak:

  1. <?php
  2. $queryStr = "jan";
  3. $actualUsers = $this->dao->findUsersByFornameSurnameOrEmail( $queryStr );
  4. ?>


czy te typy argumentów to muszą być typy zdefiniowane przeze mnie, a nie wbudowane w PHP?

Ten post edytował Can I 20.04.2007, 19:18:53


--------------------
stay all night, we're save the population
flash / flex / web developer
Go to the top of the page
+Quote Post
Statozor
post 20.04.2007, 19:26:36
Post #2





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 23.09.2006

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


Zmienna $queryStr musi być obiektem klasy string inaczej nie wypali
Go to the top of the page
+Quote Post
Can I
post 20.04.2007, 19:32:23
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 7.06.2006
Skąd: Coventry, UK

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


no a nie jest? winksmiley.jpg
czyli zgaduję, że w PHP5 nie ma jakiegoś auto-boxingu i wbudowanej klasy string czy String, czyli sam bym sobie musiał zdefiniować


--------------------
stay all night, we're save the population
flash / flex / web developer
Go to the top of the page
+Quote Post
Statozor
post 20.04.2007, 19:37:19
Post #4





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 23.09.2006

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


Sam chciałem tak kiedyś zrobić ale też się nie dało więc doszedłem właśnie do takiego wniosku jak Ty.
Możesz w funkcji sprawdzać typ zmiennej co jest lepsze niż tworzenie nowej klasy dla stringów winksmiley.jpg
Go to the top of the page
+Quote Post
batman
post 20.04.2007, 19:38:11
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Taki zapis

  1. <?php
  2. public function findUsersByFornameSurnameOrEmail( string $queryStr );
  3. ?>


oznacza, że do metody przekazany ma zostać obiekt typu string. W PHP nie ma "wbudowanych" obiektów, tak jak ma to miejsce na przykład w C#. W podanym przez Ciebie przykładzie, do metody przekazujesz łańcuch znaków, a nie obiekt string i przez to zgłaszany jest błąd.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
Can I
post 20.04.2007, 23:46:27
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 7.06.2006
Skąd: Coventry, UK

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


rozumiem


--------------------
stay all night, we're save the population
flash / flex / web developer
Go to the top of the page
+Quote Post
dr_bonzo
post 20.04.2007, 23:52:22
Post #7





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

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


I wymuszac da sie, jak pamietam, tylko obiekty i tablice.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
menic
post 21.04.2007, 00:00:55
Post #8





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


dobrze pamietasz smile.gif


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Sedziwoj
post 21.04.2007, 18:20:38
Post #9





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


I to jest w manualu, więc nie rozumiem czemu od razu nie odesłaliście...
http://www.php.net/manual/en/language.oop5.typehinting.php" title="Zobacz w manualu PHP" target="_manual

Cytat
PHP 5 introduces Type Hinting. Functions are now able to force parameters to be objects (by specifying the name of the class in the function prototype) or arrays (since PHP 5.1).


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
menic
post 21.04.2007, 18:37:48
Post #10





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Sedziwoj: w manualu wszystko jest ;-)


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Sedziwoj
post 21.04.2007, 18:41:12
Post #11





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Cytat(menic @ 21.04.2007, 19:37:48 ) *
Sedziwoj: w manualu wszystko jest ;-)


Ha ha ha, bardzo śmieszne. Tam masz opisany język, ale nie jak go używać.
To że wiesz jak się tworzy obiekt, nie oznacza że umiesz programować obiektowo.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
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: 23.04.2024 - 12:28