Kontrola typu
- Jakub Šulák
- Člen | 222
Chtěl bych se zeptat, zda náhodou někdo nezkoušel implementovat kontrolu
typové validity.
Občas se mi stane, že se mi do nějaké proměnné dostane něco
v nesprávném typu – pak hledám dlouze problémy.
Napadlo mě tedy, zda by nešlo pomocí třídy Annotations a funkcí __get() a
__set(), zavést typovou kontrolu pro PHP.
Jde mi o něco takového:
<?php
/**
* @var int i
* @var string s
*/
class Animals extends TypedObject{
public i;
public s;
}
$a = new Animals;
$a->s = 1.5; // throw Exception
?>
Třída TypedObject je třída odvozená od Object, která definuje pro
__set() kontrolu typu na základě anotace.
Celý princip samozřejmě nefunguje u proměnných, u kterých anotace
nejsou – to by však nevadilo, nejvíc chyb v typu je mezi předáváním
parametrů.
- LM
- Člen | 206
__get
a __set
jsou volány pouze na neexistující
(nebo zapouzdřené) vlastnosti, takže na uvedeném příkladu to nelze. Ale
Vrána se pokoušel o nějaký řešení http://php.vrana.cz/…ezovanim.php.