Ik wil een element van de eerste class gebruiken maar hij vind die niet,
Ik heb dat al is gedaan, heb die script afgebroken, en vind het verschil niet...
Nu wou ik weten wat ik verkeerd doe?
Dit is nu simpel voorgesteld:
bestand: "index.php"
<?php
include('./Main.php');
$Main= new Main;
?>
bestand: "Main.php"
<?php
class Main{
private $sub;
public function __construct(){
include('./Subclass.php');
$this->sub = new Subclass;
}
public function echo_ed($waarde){
echo $waarde;
}
}
?>
bestand: "Subclass.php"
<?php
class Subclass{
public function __construct(){
/*Vanuit deze class wil ik waardes doorgeven terug aan "Main"*/
global $Main;
$Main->echo_ed('ok');
}
}
?>
Fatal error: Call to a member function echo_ed() on a non-object in D:\wamp\www\Subclass.php on line 6
bestand: "Main.php"
<?php
class Main{
private $sub;
private $Element = array();
public function __construct(){
include('./Subclass.php');
$this->sub = new Subclass;
}
public function __destruct() {
print_r($this->Element);
}
public function echo_ed($waarde){
$this->Element[] = $waarde;
}
}
?>
bestand: "Subclass.php" blijft het zelfe en of met "extends main"
Nu,
als ik zonder extends doe krijg je
Fatal error: Call to undefined method Subclass::echo_ed() in D:\wamp\www\Subclass.php on line 6
$Main = new Main; < betekend dat hij nog aan het maken is. dus bestaat nog niet...
Daarom dat hij die waarde/element nog niet vond.
fix:
bestand: "index.php"
<?php
include('./Main.php');
$Main= new Main;
$Main->startup();
?>
bestand: "Main.php"
<?php
class Main{
private $sub;
private $Element = array();
public function startup(){
include('./Subclass.php');
$this->sub = new Subclass;
}
public function __destruct() {
print_r($this->Element);
}
public function echo_ed($waarde){
$this->Element[] = $waarde;
}
}
?>
bestand: "Subclass.php"
<?php
class Subclass{
public function __construct(){
global $Main;
$Main->echo_ed('ok');
}
}
?>
<?php
class Main
{
private $sub;
private $Element = array();
public function __construct()
{
include( 'Subclass.php' );
$this->sub = new Subclass;
}
public function __destruct()
{
print_r( $this->Element );
}
public function echo_ed( $waarde )
{
$this->Element[] = $waarde;
}
}
?>
Subclass
<?php
class Subclass extends Main
{
public function __construct()
{
$this->echo_ed( 'ok' );
}
}
?>
Bij extend zal hij inderdad 2x printen omdat de sub de main zal aanroepen, main zal dus 2x uitgevoerd worden,
haal de sub uit de main, zet er extend achter, haal $main = new $main weg en maak er $sub = new $sub van, dan kan $sub alles wat $main kan (en eventueel nog meer)