Hallo iedereen,

Ik ben bezig met "OOP" te leren.
Nu heb ik een probleempje:

dit is mijn code:

<?php

ini_set('display_errors', 1);

class tree{

public $leafs;
protected $twigs;
protected $roots;
protected $tree_trunk;
public $seeds;

}
tree::leafs;

class seasons extends tree{

/**
public function __construct(){
$this->leafs = $leafs;
}
**/

public static function Winter(){
echo '<br/>Winter brings the cold and so there are no leafs.';
}

public static function Spring(){
echo '<br/>Spring is here and the leafs are growing.';
$this->leafs = 'green';
echo 'The leafs have also turned : ' . $leafs;
}

public static function Summer(){
echo '<br/>Summer brings in the heat.';
$leafs .= 'green';
}

public static function Autumn(){
echo '<br/>Autumn is here and the leafs fall down to the ground.';
$leafs .= 'brown';
echo 'The leafs have also turned : ' . $leafs;
}
}

seasons::Winter();
seasons::Spring();
seasons::Summer();
seasons::Autumn();
?>


maar als ik hem nu in de browser bekijk dan is de output :

Fatal error: Undefined class constant 'leafs' in D:\xampplite\htdocs\thuis\test\tree.php on line 14


iemand een oplossing, en of ziet het probleem?

bedankt.
Je roept tree::leafs aan op regel 14, maar dat kan op deze manier alleen als hij static is. Wil je hem bekijken, dan moet je een nieuw object Tree aanmaken, en dan $tree->leafs. Je hebt er echter weinig aan, want er zit geen waarde in.

Let er ook op dat je nu een nutteloze extend gebruikt. Een seizoen heeft niks met een boom te maken, dus mag die ook niet extend zijn. Een extend kan je wel gebruiken als je een soort boom hebt. Bijvoorbeeld "class Kastanjeboom extends Boom".

Edit:
Zie ook deze tutorial
Wil ik nog even opmerken dat een functie iets DOET en een class/object iets IS. Dus winter(), spring() etc. als functie klopt niet. Je kunt daar beter ook classes voor maken. De BOOM kan dan in de HERFST bijvoorbeeld zijn BladerenLatenVallen();

Ook klopt 'seasons' niet. Een object/class beschrijft altijd 1 ding . Dan wordt het dus 'class season'. Winter enzo zijn allen een seizoen, dus dan wordt het iets als 'class winter extends season'. De winter erft dan alle algemene eigenschappen van een seizoen, terwijl de class 'winter' specifiek de winterse details beschrijft.


jaja...

Reageren