2001/05/26
1 Comment
Reading time: 2 – 4 minutes
Després d molts dies amb el mateix error i donant voltes sobre el
tema i sense una solució clara, avui he aconseguit q em funciones…
El problema estava en q quan feia una classe q tenia un atribut format per
un array d’objectes d’una altre classe no primitiva al no contemplar els tipus
d variables en PHP tenia problemes d’incompatibilitat de tipus i coses
així.
A continuació adjunto un exemple molt simple on es veu com funciona el
tema.Si algú té alguna idea per millorar la fomra de guardar un
array d’objectes com a atribut dins una classe agraïria q m’ho fes saber.
Aquesta idea és molt útil a l’hora de fer catàlegs de
productes o families d’objectes geràrquiques.
Hi ha poca gent q usi la P.O.O. amb PHP, ja q no soporta moltes de les
funcionalitats de la mateixa però per projectes una mica grans és
útil posar-s’hi sino es fa difícil reaprofitar codi en moltes
ocasions.
L’exemple esta format per 3 fitxers:
–Clase1.php3 : és una classe molt simple, amb només dos
atributs.
–Clase2.php3 : és la classe q té com a atribut un array
d’objectes d la classe anterior.
–test.php3 : fitxer d prova, crea un objecte d la Clase2 i afegeix
elements a l’atribut array de la Clase1.
Codi de la Clase1.php3:
class Clase1 {
var $dada1;
var $dada2;
function Clase1($pdada1=””,$pdada2=””) {
$this->dada1=$pdada1;
$this->dada2=$pdada2;
}
function setDada($pdada1=””,$pdada2=””) {
$this->dada1=$pdada1;
$this->dada2=$pdada2;
}
function getDada1() {
return $this->dada1;
}
function getDada2() {
return $this->dada2;
}
}
Codi de la Clase2.php3:
class Clase2 {
var $dato;
var $vector;
function Clase2() {
}
function setDato($pdato) {
$this->dato=$pdato;
}
function addVector($dada1,$dada2) {
$this->vector[“$dada1”] = new Clase1($dada1,$dada2);
}
function getVector($dada1) {
$a=$this->vector[“$dada1”];
return $a->getDada1();
}
}
Codi de la test.php3:
include(“Clase1.php3”);
include(“Clase2.php3”);
$test2 = new Clase2;
$test2->Clase2();
$test2->addVector(“test”,”testejant”);
$test2->addVector(“test2″,”testejant2”);
$test2->addVector(“test3″,”testejant3”);
$test2->addVector(“test4″,”testejant4”);
echo $test2->getVector(“test”);
echo “
n”;
echo $test2->getVector(“test2”);
echo “
n”;
echo $test2->getVector(“test3”);
echo “
n”;
echo $test2->getVector(“test4”);