>From the looks of it, if i were to do the same, I
would rather make second class the one I initiate and
"return" it, but that would require a third.

And the error is strange because you're doing
something strange!

What do you want to do ? Be able to access base_class
stuff from second_class ? If so :

<?php

class base_class {
  function base_class() { do something ... ; }
  var $some = 200;
};

class second_class {
  var $foo;
  function second_class(&$oref) //constructor
    {
      $this->foo = &$oref;
    }
};

$base = new base_class;
$second = new second_class($base);

$second->foo->some = 100;
// here it is, base_class' some is accessible

?>

HTH
Mukul Sabharwal


> From: "Fabio Rotondo" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, August 12, 2003 2:38 AM
> Subject: [PHP] Strange problem in class creation
>
> Hi all,
> 
> I have encountered a "tricky" problem with PHP 4.3.1
(installed with 
> SuSE 8.2).
> I don't know if it is a bug or not. Maybe is just me
missing something.
> 
> What I'd like to do is to pass a reference of
"base_class" instance to the
> constructor of "second_class" (so that the newly
created "second_class" 
> instance can
> call methods from the "base_class" instance.
> It seems that if "base_class" constructor directly
calls its method 
> "create()" (that is
> responsible of creating the "second_class" instance,
passing _$this_ as 
> constructor
> argument) the second_class gets a "copy" of
"base_class" instance and 
> not the real thing.
> 
> To test it, I have added an array ($arr) in the
base_class and set a 
> value into it.
> If "second_class" really have a reference to the
"real" base_class 
> instance, it should be
> able to print its contents, but this just doesn't
work.
> 
> Please, notice that if in the following code you
remove the line 
> "$this->create()"
> in the base_class constructor and add the commented
line in the main 
> body, everything
> works fine.
> 
> What I am really missing?
> 
> Please, help!
> 
> Ciao,
> 
>    Fabio
> 
> ---- CODE STARTS HERE
------------------------------------------
> <?php
> class base_class
> {
>          var $arr;
>          var $class;
> 
>          function base_class ()
>          {
>                  $this->arr = array ();
>                  $this->class = false;
> 
>                  // it seems to create another
"instance" of base_class
>                  $this->create ();               //
this line does not work
>          }
> 
>          function set ( $val )
>          {
>                  $this->arr []  = $val;
>          }
> 
>          function create ()
>          {
>                  $this->class = new second_class (
$this );
>          }
> 
>          function test ()
>          {
>                  $this->class->dump ();
>          }
> }
> 
> class second_class
> {
>          function second_class ( & $main_class )
>          {
>                  $this->main_class = & $main_class;
>          }
> 
>          function dump ()
>          {
>                  print_r ( $this->main_class->arr );
>          }
> }
> 
> $b = new base_class ();
> // $b->create ();               // This line works
as expected
> $b->set ( "ciao" );
> $b->test ();
> print "<br />";
> print_r ( $b->arr );
> 
> ?>
> ---- END CODE
---------------------------------------------
> 


=====
Mukul Sabharwal ([EMAIL PROTECTED])

__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to