За последние 24 часа нас посетили 18743 программиста и 1725 роботов. Сейчас ищут 1243 программиста ...

Доступ к идентификатору соединения с БД из класса.

Тема в разделе "PHP для новичков", создана пользователем bobroff, 17 авг 2009.

  1. bobroff

    bobroff Активный пользователь

    С нами с:
    20 мар 2009
    Сообщения:
    44
    Симпатии:
    0
    Здравствуйте

    Подскажите, пожалуйста...К примеру есть config.php:
    Код (Text):
    1.  
    2. // Подключаемся к БД. Устанавливаем Логин, Пароль, Хост и Базу Данных!!!
    3. $DATABASE = DbSimple_Generic::connect('mysql://admin:admin@localhost/emeal');
    Есть класс Navigation:
    Код (Text):
    1.  
    2. class Navigation
    3. {
    4.     function __construct(){
    5.            $rows = $DATABASE->select('SELECT * FROM navigation');
    6.            foreach ($rows as $numRow => $row) {
    7.            echo $row['name'];}
    8. }
    Естественно код не работает, т.к. $DATABASE из класса не виден.

    Как из класса получить доступ к идентификатору соединения с БД?

    Понимаю, что можно каждый раз при создании экземпляра класс можно явно передавать идентификатор, но есть ли другой вариант?

    P.S.: я новичек...
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. function __construct(){
    2.      global $DATABASE;
     
  3. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Или изменить чуток класс Navigation:

    PHP:
    1. <?php
    2.  
    3. Navigation::$database = DbSimple_Generic::connect('mysql://admin:admin@localhost/emeal');
    4.  
    5. class Navigation
    6. {
    7.     public static $database;
    8.  
    9.     public function __construct() {
    10.          var_dump(self::$database);
    11.     }
    12. };
    13.  
    14. ?>
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Singleton Pattern
     
  5. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Наверное, вы просто не все исходники взяли.
    Вряд ли человек, написавший код, не подумал, что $DATABASE не будет виден из class Navigation.
     
  6. bobroff

    bobroff Активный пользователь

    С нами с:
    20 мар 2009
    Сообщения:
    44
    Симпатии:
    0
    Если не затруднит, можно пример реализации, применительно к моему случаю.

    P.S.: что такое синглтон в теории понимаю, но на практике пока не очень...

    Это я написал и он действительно не виден, проверял.
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    bobroff
    PHP:
    1. <?
    2. class DB {
    3.     protected static $db_link=null;
    4.     static function getInstance(){
    5.           if(!self::$db_link){
    6.               self::$db_link=DbSimple_Generic::connect('mysql://admin:admin@localhost/emeal');
    7.           }
    8.           return self::$db_link;
    9.     }
    10. }
    11.  
    12.  
    13. class Nav {
    14.     function some_name(){
    15.         $db=DB::getInstance();
    16.     }
    17. }
    18. ?>