Door
Manaus Lavens
op 20-12-2010 21:57
gewijzigd op 20-12-2010 21:58
2.438 views
Beste,
Bij het programmeren met oop ben ik op een probleem gekomen.
Ik wil binnen een class, een nieuwe class aanmaken en deze class meegeven.
Bv:
<?php
/**
* @author Lavens
* @copyright 2010
*/
class parent{
public function __construct(){
}
private function test(){
return new child($this);
}
}
class child{
private $parent
public function __construct(parent $parent){
$this->parent = $parent;
}
}
?>
De variabele $this werkt blijkbaar niet. Ik krijg een wit scherm. Iemand een idee hoe ik hem wel kan meegeven? Of is dit onmogelijk?
Een wit scherm betekend in dit geval gewoon dat het goed is.
@karl
Hoeft niet perse he. Dit is opzich een 'klein' begin van het te weinig gebruikte '[google]dependency injection[/google]'. Maar dat is waarschijnlijk niet waar manaus op doelt, maar goed.
Het is de functie verwijderauto van de class Gebruiker die fout loopt.
Hieronder zie je de functie verwijderauto van class Gebruiker:
public function verwijderauto(){
$query = $this->db->query("SELECT id, UNIX_TIMESTAMP(bouwjaar) as bouwjaar, merk FROM autos WHERE eigenaar = '".$this->gegevens['id']."'");
while($row = $query->fetch()){
$type = new Auto($this->db, $this, $row['merk']);
if($type->type("leeftijd") - (floor((time() - $row['bouwjaar'])/(60*60*24))) < 1){
$this->db->query("DELETE FROM autos WHERE id = '".$row['id']."'");
}
}
}
?
Onbekende gebruiker
20-12-2010 22:07
Yea Rupie op 20/12/2010 22:00:52
Ja en wat is je vraag?
__construct(parent $parent)
klopt dit wel?
Nee.
Niels Kieviet op 20/12/2010 22:04:16
Een wit scherm betekend in dit geval gewoon dat het goed is.
@karl
Hoeft niet perse he. Dit is opzich een 'klein' begin van het te weinig gebruikte '[google]dependency injection[/google]'. Maar dat is waarschijnlijk niet waar manaus op doelt, maar goed.
Als hij dat kent, dan weet hij ook hoe hij dat moet fixen.
zie mijn reactie hierboven voor de exacte code. Als ik de aanmaak van het object auto aanroep in Gebruiker, dan loopt het fout en is heel men website wit. Zet ik '//' ervoor dan werkt hij wel normaal. Dus het moet effectief daaraan liggen.