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. DlTA - 29 Августа, 2011 - 02:45:28 - перейти к сообщению
имеем несколько классов:
CDB для работы с базой
CCatalog для обработки менюхи.
CView для обработки шаблонов

PHP:
скопировать код в буфер обмена
  1. class CCatalog
  2. {       // класс каталог (главное меню)
  3.   private $catalogArr = array();
  4.   private $cView;
  5.   private $cDb;
  6.  
  7.   function __construct($cView,$cDb)     // ($cView,&$cDb)// результат такой же
  8.   {
  9.     echo "<pre>".print_r($cDB,true)."</pre>+--+"; // ничего не передалось
  10.     $this->cView = $cView;
  11.     $this->cDb = $cDb;
  12.     $this->catalogArr = $this->getCatalog();                   
  13.   }
  14. }
  15. $cDB = new CDB();
  16. $cView = new CView($_SERVER['DOCUMENT_ROOT'].'/templates/');
  17. echo "<pre>".print_r($cDB,true)."</pre>---"; // выводит содержимое класса
  18. $cСatalog = new CCatalog($cView,$cDB);
  19. $tem = $cDB->rows("SELECT * FROM `cat`);// так работает
  20.  

но при этом указанный в параметрах эксемпляр класса СView был обработан нормально
а на эксемпляр класса CDB при попытке вызвать его методы ругается, мол нет у него таких метовод, хотя вызывал эти методы на главном файле, все нормально

------------
проверил оказывается конструктор не хочет видеть второй параметр, почему??
(Добавление)
блин, баг в неправильном написании переменной, регистр последнего символа))
2. Slavenin - 09 Сентября, 2011 - 02:16:40 - перейти к сообщению
я так понимаю попытка вызвать методы CDB осуществляется здесь:
PHP:
скопировать код в буфер обмена
  1. $this->catalogArr = $this->getCatalog();  


если я прав, то надо вот так:
PHP:
скопировать код в буфер обмена
  1. $this->catalogArr = $this->cDb->getCatalog();

 

Powered by ExBB FM 1.0 RC1