Xpoint
   [напомнить пароль]

Область видимости объектов в классах и методах

Метки: [без меток]
2009-08-18 15:22:50 [обр] Maximing[досье]

Добрый день.

Есть код:

<? 
$obj = new testClass(); 

class newClass { 

 public function newMethod() { 

    return $obj->testMethod(); 

 } 

} 
?>

В методе newMethod объект $obj не виден.

Неужели для того, чтобы объект был виден нужно:

создавать объект непосредсвенно в методе:

<? 
class newClass { 

 public function newMethod() { 

    $obj = new testClass(); 
    return $obj->testMethod(); 

 } 

} 
?>

или объявлять объект глобальным

<? 
$obj = new testClass(); 

class newClass { 

 public function newMethod() { 

    global $obj; 

    return $obj->testMethod(); 

 } 

} 
?>

Или можно обойтись по-другому?

спустя 3 часа 3 минуты [обр] Николай(3/3)[досье]
Ну вы даете...
<? 
$obj = new testClass(); 

class newClass { 

 public function newMethod() { 

    return $this->testMethod(); 

 } 

} 
?>
спустя 2 минуты [обр] Николай(3/3)[досье]

Извините, прочитал не внимательно :)

Скорее всего создавать обьект в конструкторе. Либо все классы унаследованны от одного класса. так сделанно в codeigniter

спустя 19 минут [обр] Алексей Севрюков(162/1280)[досье]

Maximing[досье]

или объявлять объект глобальным

Подход использовать объекты созданные вне класса где он используется - неправильный, ИМХО. Правильные варианты:

  1. Создавать объект в этом же классе
  2. Передавать объект в нужный класс как параметр конструктора или метода.
Powered by POEM™ Engine Copyright © 2002-2005