Waardes grijpen van ander class

Halo,

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

Gr
Cédric
extend?

<?php

class Subclass extends main
{

}

?>
halo

Hier is update script/

bestand: "index.php" blijft hetzelfde.

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

En als je met extends doet, echo'd hij 2maal...

En moet maar 1x echo'en.
gr
Cédric
ok,

$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');
}
}
?>

Getest: en werkt.
Sorry voor uw tijd.

gr
Cédric
Wat doe je, wat doe je, WAT DOE JE!

Waarom zou je het niet zo doen:

Index

<?php
include('Main.php');

$Main= new Main;
?>


Main

<?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' );
    }
}
?>


Werkt en toch een stukkie netter..

Suc6!
Nee,
Dan print hij tweemaal:
Array ( ) Array ( [0] => ok )

en dat is niet de bedoeling...
gr
Een klasse binnen een klasse includen is ook niet echt net.
Hoe moet ik het dan splitsen?
Want wil,
MYSQL
en andere elementen apart houden zodat het netter is.
anders zit je met 1000lijnen in 1 file...

en met "extends Main" print hij het 2maal..

gr
Cédric
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)
Karl Karl op 30/06/2010 23:48:44

Een klasse binnen een klasse includen is ook niet echt net.


Ooit ZF sources doorgelezen?

Reageren