Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: funktion parametrien tyyppi

Cartter [30.01.2011 21:17:48]

#

Php:ssä voi pakottaa funktion parametrien tyypin, jos tyyppi on joko array tai jonkin luokan olio. Muut tyypit ohitetaan.

Kuinka väärin / huono tapa on tehdä esim seuraavaa:

public function getPerson(string $name) {...}

Metabolix [30.01.2011 21:28:43]

#

Erittäin huono tapa:

$ php -a
Interactive shell

php > function testi(string $s) { echo $s, "\n"; }
php > testi("moi");

Catchable fatal error: Argument 1 passed to testi() must be an instance of string, string given, called in php shell code on line 1 and defined in php shell code on line 1

Call Stack:
   17.4932     640576   1. {main}() php shell code:0
   17.4932     640712   2. testi() php shell code:1

Koska parametrin tyypin on oltava luokka tai array, PHP olettaa, että string tarkoittaa tässä yhteydessä omaa luokkaasi. (Toisin sanoen "muita tyyppejä" ei suinkaan ohiteta.) Ja totta tosiaan: voit luoda string-nimisen luokan ja välittää sitä edustavan olion parametrina funktiolle. Harmi vain, ettei sillä luokalla voi korvata PHP:n sisäistä string-tietotyyppiä.

Edit: Virheilmoituksen kohta "must be an instance of string, string given" saattaa näyttää aika kummalliselta, mutta asiaa valottaa jonkin verran se, että jos funktiolle antaa väärälaisen olion, ilmoituksessa on yksi instance of enemmän: "must be an instance of X, instance of Y given". Toisin sanoen teksti on tyypiltään string mutta string-luokan olio olisi tyypiltään instance of string.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta