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. Dion - 29 Октября, 2012 - 06:26:15 - перейти к сообщению
Всем доброго времени суток! Собственно вопрос возник... смотрим код и читаем комменты в нём...
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. class main
  4. {
  5.    const CONSTANTA = 'Hello World!';
  6.    public $var;
  7. }
  8.  
  9. class side
  10. {
  11.    private $main;
  12.    private function __construct(&$main_class)
  13.    {
  14.         $this->main = &$main_class;
  15.         echo $this->main->var;           // С переменными всё отлично! "1"
  16.         echo $main_class::CONSTANTA; // Так тоже всё отлично, вернёт содержимое
  17.         echo $this->main::CONSTANTA; // А вот тут ФИГУ! Ошибка...
  18.    }
  19. }
  20.  
  21. $main = new main;
  22. $main->var = 1;
  23.  
  24. $side = new side($main);
  25. ?>
  26.  


Нас интересует echo $this->main::CONSTANTA;
Возможно я совсем чайник в ООП Огорчение
Почему так не получается обратиться к константе?
Конечно можно переопределить все нужные константы в Конструкте, но хотелось бы напрямую по ссылке обращаться.
Как это правильно делать, подскажите?
2. dubasua - 29 Октября, 2012 - 06:37:31 - перейти к сообщению
Потому что константа есть статическая, и она не является свойством обьекта.
3. sKaa - 29 Октября, 2012 - 07:36:21 - перейти к сообщению
Dion пишет:
$this->main::CONSTANTA; // А вот тут ФИГУ! Ошибка...

http://php.net/manual/ru/function.constant.php

 

Powered by ExBB FM 1.0 RC1