Autor Zpráva
Acci
Profil

class hlavni {
function hlavni() {
$this->vedlejsi = new vedlejsi;
}
}

class vedlejsi extends hlavni {
var $kuba = 'Ahoj';
}

$trida = new hlavni();
echo $trida->vedlejsi->kuba;

Tenhle kód mi nefunguje. Nevypisuje to žádnou chybu, jen spadne Apache(!). Ostatní skripty v PHP normálně fungují.

Verze PHP: 5.0.4
Verze Apache: 2.0.54
wizard
Profil
neni to tim, že voláš konstruktor vedlejsi() driv nez je vlastně deklarovanej?
thingwath
Profil
To by přece mělo být jedno, kód se před vykonáním kompiluje.
xixli
Profil
No keď máš tento kód, tak sa ti to vlastne zacyklí... sa čudujem, že ti nespadol celý komp.
Keď inicializuješ hlavni, tak vedlejsi má stále konštruktor triedy hlavni, takže stále dokola vytváraš objekt pre vedlejsi.
V podstate to isté máš aj pri tomto:

<?php
class foo {
function __construct()
{
echo get_class($this)."<br>";
$obj = new foo;
}
}

$trida = new foo();
// pise foo foo foo ... zacyklene
?>

Riešením je nedediť, resp. nedediť konštruktor:

<?php
class hlavni {
function hlavni()
{
$this->vedlejsi = new vedlejsi;
}
}

class vedlejsi extends hlavni
{
function vedlejsi() {}
var $kuba = 'Ahoj';
}

$trida = new hlavni();
echo $trida->vedlejsi->kuba;
?>
Acci
Profil
xixli
Díky, funguje to
Toto téma je uzamčeno. Odpověď nelze zaslat.

0