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?

Mvg, Manaus
Wat verwacht je precies? ;)
Ja en wat is je vraag?

__construct(parent $parent)

klopt dit wel?
Wil jij niet gewoon extends gebruiken?
[php]language.oop5.inheritance[/php]
Sorry had te vroeg op de submit knop geduwd.
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.
In de class Auto wordt volgende construct uitgevoerd :
public function __construct(Database $db, Gebruiker $user, $type, $laadauto = 0){
        $this->db = $db;
        $this->user = $user;
        $this->user->verwijderauto();
        if($laadauto != 0){
            $this->autoladen($laadauto);
        }else{
           $this->laadgegevens($type);  
        }    
    }

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']."'");
                }
            }
    }
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.

Manaus Lavens op 20/12/2010 22:07:05

Ik z


ja?
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.
Zet error reporting eens aan.

Reageren