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 :: Передать подключение к баз в наследованный класс

 PHP.SU

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


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

> Описание: Call to a member function prapare_pdo() on a non-object
imper
Отправлено: 18 Ноября, 2014 - 19:59:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


Всем добрый вечер.
Помогите пожалуйста в ООП не силён

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once Q_PATH.'/system/classes/DB.class.php';
  3.  
  4. require_once Q_PATH.'/system/core/model.php';
  5. require_once Q_PATH.'/system/core/view.php';
  6. require_once Q_PATH.'/system/core/controller.php';
  7. require_once Q_PATH.'/system/core/route.php';
  8.  
  9. Route::start(); // запускаем маршрутизатор
  10. ?>


подключаю нужные классы

вот что в db_class

PHP:
скопировать код в буфер обмена
  1. Class DB {  
  2.     protected $db_name = 'db_cent';
  3.     protected $db_user = 'iiiooo';
  4.     protected $db_pass = '123';
  5.     protected $db_host = 'localhost';
  6.     public $link;
  7.     public $pdo_obj;
  8.    
  9.     // Открывает соединение к БД. надо, что бы
  10.     // эта функция вызывалась на каждой странице
  11. public function __construct() {    
  12. try
  13. {
  14. $this->pdo_obj = new PDO('mysql:host='.$this->db_host.';dbname='.$this->db_name, $this->db_user, $this->db_pass,
  15. array(PDO::ATTR_PERSISTENT => true));
  16.  
  17. $this->pdo_obj->query("SET NAMES utf8");
  18. }
  19. catch (PDOException $e)
  20. {
  21.    print "Ошибка: " . $e->getMessage() . "<br/>";
  22.     die();
  23. }
  24.  
  25. }//конец конструктора
  26.  
  27. public function prapare_pdo($query,$array_param)
  28.     {
  29.         $res = $this->pdo_obj->prepare($query);
  30.         $res->execute($array_param);
  31.         return $res->fetchAll(PDO::FETCH_NUM);
  32.     }


вот класс модели от которого наследуются все остальные модели естественно везде нужно подключение к базе.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class Model
  4. {
  5.     public $db;
  6.    
  7.     public function get_data()
  8.     {
  9.         $this->db = new DB(); //вот здесь я не знаю что делать, пробовал по разному а как //правильно не знаю, и гуглил и читал руки из одного места у меня просто
  10.     }
  11. }
  12.  
  13. ?>
  14.  



вот дочерняя модель

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class Model_all_posts extends Model
  4. {
  5.    
  6.     public function get_data()
  7.     {
  8.         $sql_all_post = "
  9.        SELECT `id`,`name_document`,`zagolovok_post`,`name_img`,`prosmotr`,`count_comments`,`date_post`
  10.        FROM `content`
  11.        WHERE 1=1 ORDER BY `date_post` DESC LIMIT 15";
  12.        
  13.  
  14.        
  15.          array(
  16.                 'main_template'=>array(
  17.                 'title' => 'Все сатьи',
  18.                 'description' => 'Сайт расскажет где и как проходит активный отдых.'
  19.                 ),
  20.            
  21.             array(
  22.                    $this->db->prapare_pdo($sql_all_post,array()), //и вот ругается на эту строчку
  23.                  )
  24.         );
  25.        
  26.        
  27.     }
  28. }
  29.  
  30.  
  31. ?>



сама ошибка Fatal error: Call to a member function prapare_pdo() on a non-object in Z:\home\onetyr.cc\www\application\models\model_all_posts.php on line 22


-----
Самое лучшее решение проблемы
самое простое
 
 Top
imper
Отправлено: 18 Ноября, 2014 - 22:27:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


Разобрался кароче Хм


-----
Самое лучшее решение проблемы
самое простое
 
 Top
myocean
Отправлено: 19 Ноября, 2014 - 17:06:16
Post Id


Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


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




Так поделитесь решением! Возможно оно поможет кому...
 
 Top
imper
Отправлено: 23 Ноября, 2014 - 20:50:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012  
Откуда: Тольятти


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

[+]


myocean пишет:
Так поделитесь решением! Возможно оно поможет кому...

Сорри, забыл, обычно оставляю.

Кароч, ребят, у кого такая проблема.

Вы когда наследуете класс и переопределяете функцию то грубо говоря пишете её заново.

и когда я в родительском классе создал объект в функции get_data() и потом в дочернем классе перезаписал эту функцию, то как бы потерял объект базы, поэтому я просто объявил объект $this->db = new DB(); не в get_data а в конструкторе родительского класса, и теперь при наследовании обязательно выполнится родительский конструктор и вы будете иметь объект базы и смело сможете к нему обращаться


-----
Самое лучшее решение проблемы
самое простое
 
 Top
Bio man
Отправлено: 23 Ноября, 2014 - 22:57:52
Post Id


Постоянный участник


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


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




Или можно так
PHP:
скопировать код в буфер обмена
  1. class Model_all_posts extends Model
  2. {
  3.    
  4.     public function get_data()
  5.     {
  6.         parent::get_data();
  7.  
  8.         // остальной код...
  9.     }
  10. }
 
 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