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

Савелей

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

Хотел узнать как мне реализовать данную хе....ю

есть
PHP:
class Base
{
 
 function Base($db)
 {
  $this->db = $db;
  $this->test =  /* ???? Как мне получить глобальный объект $Base*/
 }

}

$DB = new DB();
$DB->connect();

$Base = new Base($DB);
 

iceman

говнокодер
$this - это и есть твой обьект, текущая инстанция

-~{}~ 10.06.09 12:08:

вот только не вздумай делать так, $this->test = $this;
 

Савелей

Новичок
рекурсия, как правильно?

по ссылке &;


тоесть разницы между

global $Base;
$this->test = &$Base;

и

$this->test = &$this;

нет?
 

phprus

Moderator
Команда форума
Савелей
Объясни зачем это тебе надо?
Какая по твоему разница между внешней переменной $Base и переменной $this внутри методов класса?
 

Савелей

Новичок
PHP:
class Load {

 function Load()
 {
 }

 function load_test($a)
 {
  global $AppBase;
  $AppBase->test5 = new m($a);
 }

}

class m {

 function m($a)
 {
  $this->m_test = $a;
 }

}

class Base {

 function Base()
 {
 }

}

class AppBase extends Base
{

 function AppBase()
 {
  $this->test = new Load();
  $this->test->load_test('2222222222222');
 }

}

$AppBase = new AppBase();
var_dump( $AppBase->test5 );
как правильно создать $AppBase->test5 в классе Load который был вызван из конструктора AppBase

вот что-то типа этого мне надо...


разница $Base глобальный объект а this текущий,
а нужно мне это для создания объектов прямо в конструкторе...

и естественно что моя хр...нь типа global $AppBase; не работает.
 

iceman

говнокодер
PHP:
class Load {

 function Load()
 {
 }

 function load_test($object, $a)
 {
  $object->test5 = new m($a);
 }

}
 

Савелей

Новичок
Ну тоесть получить объект прямо в конструкторе

Load()
{
$this->object = и уже тут получить???

не передавая через аргумент.
}
 

Савелей

Новичок
есть основной контроллер AppBase и его расширения к примеру News extends AppBase,
так вот. я хочу в основном конструкторе автоматом подгружать нужные мне классы и "модели" для расширений.
 

iceman

говнокодер
AppBase нечего не знает о News

ты думаешь $news = new News () и $app = new AppBase() будет одно и тоже?
 

Савелей

Новичок
так я об это знаю.

class AppBase
{
var $test = 'Привет';
function AppBase()
{
$this->var = $this->test;
}
}

class News extends AppBase
{
function test_news()
{
echo $this->test;
}
}

$app = new AppBase();
var_dump($app);
$news = new News();
var_dump($news);
$news->test_news();
 

dimagolov

Новичок
я хочу в основном конструкторе автоматом подгружать нужные мне классы и "модели" для расширений.
Не надо этого хотеть. Класс-предок ничего не должен знать о классах-потомках.
"автоматом подгружать нужные мне классы" как и кто узнает какие классы нужные?
 

Савелей

Новичок
почему если передаю ссылку так

PHP:
class Load { 

 function Load() 
 { 
 } 

 function load_test($object, $a) 
 { 
  $object->test5 = new m($a); 
 } 

}
то все ok.

а если через конструктор, получаю рекурсию...
PHP:
class Load { 

 function Load($object) 
 { 
  $this->object = &$object;
 } 

 function load_test($a) 
 { 
  $this->object->test5 = new m($a); 
 } 

}
 
Сверху