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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Call to a member function

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Call to a member function
KoDeRSmerT
Отправлено: 07 Мая, 2014 - 18:05:13
Post Id


Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




привет.

есть два класса
PHP:
скопировать код в буфер обмена
  1.  
  2. class Check  {
  3. public $result=array();
  4.        
  5.         function login($company,$leqeb,$pass){
  6.         $count = $this->db->sql("SELECT fc_id FROM " . DB_PREFIX . "id WHERE fc_name = '" . $this->db->escape($company) . "' and fc_id in (select fc_us from " . DB_PREFIX . "us where fc_login='" . $this->db->escape($leqeb) . "' and fc_sifre='" . $this->db->escape($pass) . "' limit 1) ")->say;
  7.         if($count<0){
  8.         //log error
  9.         }
  10.         if($count>0){$this->result[]='login_error';}
  11.         }
  12.        
  13.  
  14.        
  15. }


и

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class DB {
  4.         private $driver;
  5.        
  6.         public function __construct($driver, $hostname, $username, $password, $database) {
  7.                 if (file_exists(DIR_DATABASE . $driver . '.php')) {
  8.                         require_once(DIR_DATABASE . $driver . '.php');
  9.                 } else {
  10.                         exit('Error: Could not load database file ' . $driver . '!');
  11.                 }
  12.                                
  13.                 $this->driver = new $driver($hostname, $username, $password, $database);
  14.         }
  15.                
  16.         public function sql($sql) {
  17.                 return $this->driver->query($sql);
  18.         }
  19.        
  20.         public function escape($value) {
  21.                 return $this->driver->escape($value);
  22.         }
  23.        
  24.         public function say() {
  25.                 return $this->driver->countAffected();
  26.         }
  27.  
  28.         public function getLastId() {
  29.                 return $this->driver->getLastId();
  30.         }      
  31. }
  32. ?>
  33.  


пишу код

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
  4.  
  5. $check_fc = new Check;
  6. $check_fc->login($company,$leqeb,$pass);
  7.  
  8.  


результат

Fatal error: Call to a member function sql() on a non-object in Y:\home\ode.az\www\fc_system\fc_library\check.php on line 20


в чем проблема? спс заранее.
 
 Top
esterio
Отправлено: 07 Мая, 2014 - 18:26:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




А как екземпляр DB оказалася внутри Check? Либо global $db либо передать в конструкто (что более предпочтительней). Или курим синглтон
 
 Top
KoDeRSmerT
Отправлено: 07 Мая, 2014 - 18:33:13
Post Id


Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




esterio пишет:
А как екземпляр DB оказалася внутри Check? Либо global $db либо передать в конструкто (что более предпочтительней). Или курим синглтон


global попробовал. работает спс.
а второй и третий вариант вообще не понял )) я первый раз работаю над классами. но без классов отлично разбираюсь в пхп. конструктор знаю что. но не понял какое отношение имеет на эту проблему ) если есть возможность обясните пожалуйста второй вариант.

(Отредактировано автором: 07 Мая, 2014 - 18:36:43)

 
 Top
Мелкий Супермодератор
Отправлено: 07 Мая, 2014 - 18:55:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




KoDeRSmerT пишет:
без классов отлично разбираюсь в пхп

И ни разу не слышали об областях видимости?
Даже о том, что с выключенными ошибками ничего никогда не пишут?
Уж сколь во многом в php мне самому далеко до "отлично разбираюсь", но такое?..


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB