Obecnie nie musisz sprawdzać typu zmennej jeśli jest ona obiektem, lub tablicą
<?php
function foo
(array $param){} ?>
Notacja węgierska faktycznie może pomóc w czytaniu kodu, ale nazewnictwo zmiennych wydaje mi się przesadą (choć nie zawsze), zwłaszcza w kodzie obiektowym, mocno "zinterfejsowanym". Rozważmy taki przykład.
<?php
class A{
/**
* @var integer
*/
private $MyProperty;
/**
* Ustawia A::$MyProperty
* @param integer
*/
public function setMyProperty($value){
$this->MyProperty=$value;
}
else {
throw
new BadVarTypeException
($value, gettype($value)); }
}
public function getMyProperty(){
if (isset($this->MyProperty)){ return $this->MyProperty;
}
else{
return false; // albo coś innego - np, wyjatek, lub null
}
}
public function testClass(){
$this->setMyProperty(2);
print $this->getMyProperty(); }
}
$obj=new A();
$obj->testClass();
?>
Nazwy zmiennej praktycznie się nie używa. Klasa udostępnia za to settery i gettery do tej właściwości. Od tego momentu nie musisz znać nazwy zmiennej - używasz interfejsu, do którego musisz przeczytać dokumentację. Zauważcie, że metody są publiczne, a więc przeznaczone dla otoczenia obiektu, ale sama klasa również korzysta ze zdefiniowanego przez siebie interfejsu
W tym przypadku oznaczanie A::$MyProperty przedrostkiem
i lub
int byłoby masłem maślanym, bo tylko dwie metody bezpośrednio operują na tej zmiennej. Dla programisty jest ważne, że musi przekazać zmienną typu integer jako argument metody setMyProperty(). Nie musi sprawdzać tez typu zwracanego przez getMyProperty(), bo jest on wymuszony przez wspomniany setter.
Owszem. Nie zawsze tworzy się tak rozbudowane interfejsy dostępu do zmiennych, ale chciałem pokazać, że w kodzie obiektowym można (często się nawet zaleca) inaczej.
Wydaje mi się, że ta notacja jest w php niezbędna w kodzie strukturalnym oraz w mocno skomplikowanych algorytmach (30-40 linijek kodu?). Po prostu ułatwia zrozumienie.
Na koniec cytat z Wikipedia.org
Cytat
Notacja węgierska, przez wielu wręcz uwielbiana, u innych wywołuje mieszane uczucia. Główną wadą tego systemu jest zmiana typu zmiennej. Jeśli chce się zmienić typ, trzeba poprawiać nazwę w każdym miejscu programu. W związku z tym notacja nie jest najlepszym rozwiązaniem dla programistów nieco roztargnionych.
Pozdrawiam.