Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вызов метода объекта из метода другого объекта
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Вызов метода объекта из метода другого объекта

Страниц (1): [1]
 

1. Crate - 03 Февраля, 2012 - 08:06:51 - перейти к сообщению
Здравствуйте еще раз!
У меня проблема, но немного по другой части. Нужно обратиться по объекту из одного класса к функции другого. Пример:
PHP:
скопировать код в буфер обмена
  1. class Alpha {
  2.         function method1 ($text) {
  3.                 $result = trim ($text);
  4.                 return $result;
  5.         }
  6. }
  7.        
  8. $alpha = new Alpha ();
  9.        
  10. class Beta {
  11.         function method2 ($text) {
  12.                 $result = $alpha->method1($text);
  13.                 return $result;
  14.         }
  15. }

Но пишет что method1 является нон-обджект.
2. sKaa - 03 Февраля, 2012 - 08:28:38 - перейти к сообщению
Crate, а просто новую тему нельзя было создать в разделе ООП?
Как ты собрался обращаться к методу объекта если он у тебя не инициализирован вообще.

PHP:
скопировать код в буфер обмена
  1. class Alpha {
  2.             function method1 ($text) {
  3.                     $result = trim ($text);
  4.                     return $result;
  5.             }
  6.     }
  7.            
  8.    
  9.            
  10.     class Beta {
  11.             function method2 ($text) {
  12.                     $alpha = new Alpha ();
  13.                     $result = $alpha->method1($text);
  14.                     return $result;
  15.             }
  16.     }
3. Crate - 03 Февраля, 2012 - 08:37:21 - перейти к сообщению
sKaa пишет:
а просто новую тему нельзя было создать в разделе ООП?
Извините, каюсь, не создал ибо лень было.

sKaa
незнал что нужно каждый раз создавать объект класс.
4. sKaa - 03 Февраля, 2012 - 08:49:48 - перейти к сообщению
для того чтобы не создавать каждый раз объект класса существует паттерн Singleton
PHP:
скопировать код в буфер обмена
  1. class Singleton {
  2.  protected function __clone()   { }
  3.  protected function __wakeup()  { }
  4.  protected function __construct(){ }
  5.  
  6.  static private $Instance = NULL;
  7.  
  8.  static public function getInstance() {
  9.    if(self::$Instance==NULL){
  10.      $class = __CLASS__;
  11.      self::$Instance = new $class;
  12.      }
  13.    return self::$Instance;
  14.  }
  15.  
  16. }
  17.        
  18.                
  19.         class Beta {
  20.                 function method2 ($text) {
  21.                         $alpha = Singleton::getInstance();
  22.                         $result = $alpha->method1($text);
  23.                         return $result;
  24.                 }
  25.         }

Таким образом гарантированно у вас будет создана только один экземпляр класса
5. webog - 25 Февраля, 2016 - 19:53:28 - перейти к сообщению
Куда писать class Singleton ? Я так понимаю это другой файл?

Тогда и class Beta будет другой файл. Замкнутый круг...

 

Powered by ExBB FM 1.0 RC1