class Tile{
private $x=0;
private $y=5;
function __construct($dx){
$this->x = $this->y + $dx;
}
}
Dette virker, men min Tile klasse har 16 properties - Det bliver til en
del $this->, der fylder lidt i koden. Kan man g�re $this-> implicit p�
en eller anden m�de?
Og s� vil jeg gerne definere
private $z = $y * 5;
men det m� jeg ikke. Hvordan skal jeg g�re det for ikke at f� fejl?
Mvh
Stefan
Nej.
> Og s� vil jeg gerne definere
> private $z = $y * 5;
> men det m� jeg ikke. Hvordan skal jeg g�re det for ikke at f� fejl?
G�r det i din constructor ;)
- Peter
> Dette virker, men min Tile klasse har 16 properties - Det bliver til en
> del $this->, der fylder lidt i koden. Kan man g�re $this-> implicit p�
> en eller anden m�de?
Ikke mig bekendt.
> Og s� vil jeg gerne definere
> private $z = $y * 5;
> men det m� jeg ikke. Hvordan skal jeg g�re det for ikke at f� fejl?
<?
class Tile{
private $x=0;
private $y=5;
private $z;
function __construct($dx){
$this->z = $this->y * 5;
$this->x = $this->y + $dx;
}
}
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Tak Peter og Bertel.
N�ste sp�rgsm�l:
Jeg har nogle objekter, $T1, $T2, $T3 og s� fremdeles.
Hvordan laver jeg en l�kke, der kalder den samme funktion p� disse objekter?
for($i=1; $i<6; $i++)
$img = $img . $T$i->draw();
virker naturligvis ikke, men hvad g�r s�?
Mvh
Stefan
En l�sning kunne v�re at lave et array med objekterne, og s� bruge foreach.
Men kan man lave noget der ligner ovenst�ende?
Mvh
Stefan
> En l�sning kunne v�re at lave et array med objekterne, og s� bruge foreach.
Brug den.
> Men kan man lave noget der ligner ovenst�ende?
Ja, men det er klamp.
Det er muligt at tr�kke en v�rdi ud af PHP, knytte den til et $
og derved f� opbygget et variabelnavn, men det vil jeg frar�de
fordi det er sv�rt gennemskueligt.
N�r f�rst du har pr�vet at vende tilbage til din egen kode efter
3 m�neder, s� vil du s�tte pris p� at der ikke er lavet den slags
krumspring.
Ok - Tak for hj�lpen.
Jeg vender frygteligt tilbage n�r jeg l�ber ind i nye udfordringer :-)
Mvh
Stefan
>> for($i=1; $i<6; $i++)
>> $img = $img . $T$i->draw();
> En l�sning kunne v�re at lave et array med objekterne, og s� bruge foreach.
> Men kan man lave noget der ligner ovenst�ende?
$obj = "T1";
$img = ${$obj}->draw();
Burde faktisk virke, men det er rigtig grimt i dit tilf�lde. Problemet
er at data og logik bliver blandet sammen i dit tilf�lde. Lav i stedet
en funktion der forventer et array og er ligeglad med, hvad dine
variable hedder.
- Peter
Ja, det forst�r jeg, jeg var ogs� mere nysgerrig.
Nu har du stillet min nysgerrighed, og tak for det :-)
Godt nyt�r til alle.
Mvh
Stefan
Du kan gøre følgende:
for ($i = 1; isset(${'T' . $i}); ++$i) {
${'T' . $i}->draw();
}
Det er naturligvis meget smartere at definere en array. Denne datatype
er *netop* beregnet til dette formål.
du kan bruge __set og __get
Fx
class T
{
private $data = array();
public function __set($v, $data)
{
$this->data[$v] = $data;
}
public function __get($v)
{
return $this->data[$v];
}
}
$obj = new T;
$obj->t = 'Hello world';
echo $obj->t; // Hello world
>
> Og s� vil jeg gerne definere
> private $z = $y * 5;
> men det m� jeg ikke. Hvordan skal jeg g�re det for ikke at f� fejl?
Kan man ikke
Variabler er "statiske" og kan ikke udregnes, men du kan jo lave dine
udregninger i din konstrukt�r
function __construct($dx)
{
$this->x = $this->y + $dx;
$this->z = $this->y * 5;
}
>
> Mvh
> Stefan
Ah, der skulle {} uden om.
Tak for det gode eksempel.
Mvh
Stefan