Получить объект класса в конструкторе самого класса

& - он те зачем?
и о какой рекурсии ты говоришь? ты передаешь Load в object опять же объект Load?
 
зацикливание...

вот пример:

PHP:
class Load
{
 var $_object = null;

  function __construct($object)
  {
   $this->_object = $object; /* ??????? */
  /* если написать $GLOBALS['_object'] = $object; и далее в методах писать GLOBALS['_object']->$var = $var; то все как мне нужно, но это криво как то...*/

  }

  function set_var($var)
	{
   /* бла-бла-блааа */
   $this->_object->$var = " VAR = $var;";
  }
}


class Base {
 var $load = null;
 function __construct()
 {
  $this->load = new Load($this); /* ????? */
 }
}

class News extends Base {

 function set()
 {
  $this->load->set_var('var1');
  $this->load->set_var('var2');
  $this->load->set_var('var3');
  $this->load->set_var('var4');
 }
 
 function view()
 {
  echo $this->var1;
  echo "\t";
  echo $this->var2;
 }

}

$news = new News();
$news->set();
$news->view();

echo $news->var1;

echo "<pre>";
var_dump($news);
echo "</pre>";
 
И что именно у тебя зацикливается? Что то не вижу, чтоб что то зацикливалось в этом примере. Другой вопрос, что не оч понятен смысл сей конструкции...
 
$this->load = new Load($this); /* ????? */

$this->_object = $object; /* ??????? */

$this->load -> $this->_object -> $this->load
вот тут зацикливание.
 
var_dump _object -> *RECURSION*

PHP:
object(News)#4 (5) {
  ["load"]=>
  object(Load)#5 (1) {
    ["_object"]=>
    object(News)#4 (5) {
      ["load"]=>
      object(Load)#5 (1) {
        ["_object"]=>
        *RECURSION*
      }
      ["var1"]=>
      string(12) " VAR = var1;"
      ["var2"]=>
      string(12) " VAR = var2;"
      ["var3"]=>
      string(12) " VAR = var3;"
      ["var4"]=>
      string(12) " VAR = var4;"
    }
  }
  ["var1"]=>
  string(12) " VAR = var1;"
  ["var2"]=>
  string(12) " VAR = var2;"
  ["var3"]=>
  string(12) " VAR = var3;"
  ["var4"]=>
  string(12) " VAR = var4;"
 
Да нету там никакого зацикливания. News->load содержит объект класса Load, а News->load->_object содержит ссылку на все тот же News. Такая конструкция, при определенных условиях может помешать работе сборщика мусора, но никаких других проблем не вижу. Токмо хорошо понимать, зачем такое делаеш.

П.С. чтоб избежать проблем со сброщиком, напиши деструктор, который разорвет циклическую ссылку.
 
Да в твоем примере вообще не понятна причина использования такой конструкции. Какое то масло масленное у тя там получается. Там все решается простым наследованием.
 
PHP:
class Load 
{   
  function set_var($var) 
    { 
   /* бла-бла-блааа */ 
   $this->$var = " VAR = $var;"; 
  } 
}
class News extends Load { 

 function set() 
 { 
  $this->set_var('var1'); 
  $this->set_var('var2'); 
  $this->set_var('var3'); 
  $this->set_var('var4'); 
 } 
  
 function view() 
 { 
  echo $this->var1; 
  echo "\t"; 
  echo $this->var2; 
 } 

} 

$news = new News(); 
$news->set(); 
$news->view(); 

echo $news->var1; 

echo "<pre>"; 
var_dump($news); 
echo "</pre>";
Base совершенно лишний :)
 
спасибо но мне это не подходит, так как base кучу всего еще делает в реале...

да и load содержит х...ву тучу методов которые перекроются из News
 
Савелей, если тут и есть рекурсия, то в var_dump... а вообще у тебя циклические ссылки: $News->load ссылается на объект класса Load, $News->load->_object ссылается на $News... т.е. есть два объекта ($News и $News->load), и в обоих объектах есть ссылка на другой объект ($News->load и $News->load->_object соответственно). Хочешь, чтобы вывод var_dump был красивым, без слова RECURSION, не делай циклических ссылок

когда поймешь, спроси лучше, как организовать твою иерархию классов, а не как избавиться от слова RECURSION. Зачем в $News ссылка на объект класса Load? В объектах класса Load будет храниться какое-то состояние, специфичное для каждого отдельного объекта класса AppBase? Почему не сделать класс Load статическим? Зачем Load знать, как добавить в объект класса AppBase переменную? И как AppBase будет решать, что нужно подгрузить?
 
Сверху