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 :: Singletone

 PHP.SU

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


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

> Описание: Почему можно обратиться к методу query() так?
Данил Банаев
Отправлено: 07 Февраля, 2012 - 12:18:00
Post Id


Новичок


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


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




Дан класс соединения с БД.
Ломаю голову не могу понять самую полседнюю строчку кода.

Почему DbConn::getInstance() может работать с метод query(), этот метод же является собственностью класса SQLiteDatabase?

В DbConn::getInstance() лежит экземпляр класса DbConn, как этот экземпляр может обращятся к query() ?

Код рабочий и правильно написан это 100% я просто не могу саму идеологию уловить.
Объясните пожалуйста.
PHP:
скопировать код в буфер обмена
  1. class DbConn{
  2.         const DB_NAME="mydb.db";
  3.         private $_db;
  4.         static private $_instance=null;
  5.         private function __construct(){
  6.                 $this->_db=new SQLiteDatabase(self::DB_NAME);
  7.                        
  8.         }
  9.         private function __clone(){}
  10.         static function getInstance(){
  11.                 if(self::$_instance==null){
  12.                         self::$_instance=new DbConn();
  13.                 }
  14.                 return self::$_instance;
  15.         }
  16. }
  17. $sql="SELECT * FROM tb1";
  18. DbConn::getInstance()->query($sql);


Спасибо за помощь

(Отредактировано автором: 07 Февраля, 2012 - 12:19:56)

 
 Top
Zuldek
Отправлено: 07 Февраля, 2012 - 12:47:22
Post Id


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


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. private function __construct(){
  2.                 $this->_db=new SQLiteDatabase(self::DB_NAME);
 
 Top
caballero
Отправлено: 07 Февраля, 2012 - 13:00:31
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
Почему DbConn::getInstance() может работать с метод query(), этот метод же является собственностью класса SQLiteDatabase?

не может


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
snikers987
Отправлено: 07 Февраля, 2012 - 15:31:50
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




PHP:
скопировать код в буфер обмена
  1. class DbConn{
  2.         const DB_NAME="mydb.db";
  3.         private static $_db;
  4.         static private $_instance=null;
  5.         private function __construct(){
  6.                 self::$_db=new SQLiteDatabase(self::DB_NAME);
  7.                        
  8.         }
  9.         private function __clone(){}
  10.         static function getInstance(){
  11.                 if(self::$_instance==null){
  12.                         self::$_instance=new DbConn();
  13.                 }
  14.                 return self::$_db;
  15.         }
  16. }
  17. $sql="SELECT * FROM tb1";
  18. DbConn::getInstance()->query($sql);


Так нужно сделать..


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
kappa
Отправлено: 08 Февраля, 2012 - 00:04:13
Post Id



Посетитель


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


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




Вообще то не new SQLiteDatabase
а new SQLite3 или
new PDO(sqlite:/path/my.db)
 
 Top
Зверь
Отправлено: 08 Февраля, 2012 - 05:41:15
Post Id



Частый гость


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


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




kappa пишет:
Вообще то не new SQLiteDatabase
а new SQLite3 или
new PDO(sqlite:/path/my.db)

Дану?
 
 Top
Okula
Отправлено: 08 Февраля, 2012 - 07:34:34
Post Id



Участник


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


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




Зверь, вообще-то SQLite и SQLite3 это 2-е разные вещи.
http://www.php.net/manual/ru/book.sqlite3.php
 
 Top
Зверь
Отправлено: 08 Февраля, 2012 - 07:59:15
Post Id



Частый гость


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


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




А кто-то говорил о версии sqlite?
 
 Top
kappa
Отправлено: 08 Февраля, 2012 - 09:04:01
Post Id



Посетитель


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


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




[quote=Зверь][/quote]
Точно, ошибся., я с первыми версиями толком не работал.
Но лучше вообще перейти на PDO.
 
 Top
Данил Банаев
Отправлено: 08 Февраля, 2012 - 11:10:31
Post Id


Новичок


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


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




Спасибо всем.
Вроде бы разобрался.
PHP:
скопировать код в буфер обмена
  1. class DbConn{
  2.  
  3.         const DB_NAME="mydb.db";
  4.  
  5.         private $_db;
  6.  
  7.         static private $_instance=null;
  8.  
  9.         private function __construct(){
  10.  
  11.                 $this->_db=new SQLiteDatabase(self::DB_NAME);
  12.  
  13.                        
  14.  
  15.         }
  16.  
  17.         private function __clone(){}
  18.  
  19.         static function getInstance(){
  20.  
  21.                 if(self::$_instance==null){
  22.  
  23.                         self::$_instance=new DbConn();
  24.  
  25.                 }
  26.  
  27.                 return self::$_instance;
  28.  
  29.         }
  30.         function selectFromDb($sql){
  31.                 $result=$this->_db->query($sql);
  32.                 if($result)
  33.                          return $result;
  34.                 else
  35.                          return null;
  36.         }
  37. }
  38.  
  39. $sql="SELECT * FROM tb1";
  40.  
  41. DbConn::getInstance()->selectFromDb($sql);

(Отредактировано автором: 08 Февраля, 2012 - 11:16:13)

 
 Top
almair
Отправлено: 15 Февраля, 2012 - 12:41:56
Post Id


Новичок


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


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




Попробовал повторить на PDO вываливается с ошибками, что не так?
CODE (htmlphp):
скопировать код в буфер обмена
  1. class DbConn{
  2.  
  3.        
  4.  
  5.         private $_db;
  6.  
  7.         static private $_instance=null;
  8.  
  9.         private function __construct(){
  10.                define ("SQLCHARSET", "uft8" );
  11.                echo "mysql:host=".DB_HOST.";dbname=".DB_NAME.",".DB_USER.",".DB_PASS;
  12.                 $this->_db = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.",".DB_USER.",".DB_PASS);
  13.                 $this->_db->query ( 'SET character_set_connection = ' . SQLCHARSET . ';' );
  14.                 $this->_db->query ( 'SET character_set_client = ' . SQLCHARSET . ';' );
  15.                 $this->_db->query ( 'SET character_set_results = ' . SQLCHARSET . ';' );
  16.                 $this->_db->exec('SET NAMES utf8');
  17.  
  18.                        
  19.  
  20.         }
  21.  
  22.         private function __clone(){}
  23.  
  24.         static function getInstance(){
  25.  
  26.                 if(self::$_instance==null){
  27.  
  28.                         self::$_instance=new DbConn();
  29.  
  30.                 }
  31.  
  32.                 return self::$_instance;
  33.  
  34.         }
  35.         function selectFromDb($sql){
  36.                 $result=$this->_db->prepare($sql);
  37.                 if (!$result->execute ()){echo "Ошибка";}
  38.  
  39.                 if($result)
  40.                          return $result;
  41.                 else
  42.                          return null;
  43.         }
  44. }
 
 Top
Зверь
Отправлено: 15 Февраля, 2012 - 13:02:16
Post Id



Частый гость


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


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




Какие ошибки? И где определяются константы DB_HOST DB_NAME DB_USER DB_PASS?
 
 Top
almair
Отправлено: 15 Февраля, 2012 - 13:21:53
Post Id


Новичок


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


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




ох , извиняюсь, все ок, перемудрил с запятыми

CODE (htmlphp):
скопировать код в буфер обмена
  1. PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.",".DB_USER.",".DB_PASS);
  2. надо
  3. PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME , DB_USER , DB_PASS);


Вопрос в догонку, есть возможность использовать в строке константу:

CODE (htmlphp):
скопировать код в буфер обмена
  1. define ("SLOVO","новое");
  2.  
  3. $text = "Это просто <SLOVO> для меня";


а то приходится:
CODE (htmlphp):
скопировать код в буфер обмена
  1. define ("SLOVO","новое");
  2.  
  3. $text = "Это просто".SLOVO." для меня";
 
 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