За последние 24 часа нас посетили 16402 программиста и 1678 роботов. Сейчас ищут 925 программистов ...

Помогите с классом

Тема в разделе "Прочие вопросы по PHP", создана пользователем slavagoreev, 16 окт 2013.

  1. slavagoreev

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

    С нами с:
    3 фев 2013
    Сообщения:
    34
    Симпатии:
    0
    Здравствуйте форумчане! У меня возникла небольшая проблема. Существует ли возможность обращения к функциям внутри класса, не используя через класс в котором она, функций и переменных от которой она зависит.
    Просто я использую небольшой класс-хэлпер для ПДО и зачастую при выборке приходится обращаться так:
    Код (Text):
    1.  
    2. $table   = 'City';
    3. $where_equals    = array (
    4.          'CountryCode'  => 'NLD',
    5.          'District'     => 'Zuid-Holland'
    6. );
    7. $result = pdo::getManager()->select($where_equals, $table, true);  
    Как видите запись довольно длинная и каждый раз набирать неохото, можно ли опять же сделать короче?
    Из $result = pdo::getManager()->select_db($where_equals, $table, true);
    В $result = select_db ($where_equals, $table, true);
    В этом же классе написать функцию чтоб убрать лишнее
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а че нет-то? возьми да засунь внутрь функи.
     
  3. slavagoreev

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

    С нами с:
    3 фев 2013
    Сообщения:
    34
    Симпатии:
    0
    можно коротенький пример
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    function select_db ($where_equals, $table, $flag) {return pdo::getManager()->select_db($where_equals, $table, $flag);}
     
  5. slavagoreev

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

    С нами с:
    3 фев 2013
    Сообщения:
    34
    Симпатии:
    0
    спаибки
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    на таком уровне понимания, не ясно, зачем вам пдо
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
  8. slavagoreev

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

    С нами с:
    3 фев 2013
    Сообщения:
    34
    Симпатии:
    0
    Я думаю вы с одной стороны правы, у меня просто голова кипела я ни чего не соображал вообще я хотел полностью убрать обращение $class->funcion(); и сделать просто funcion(); , понимаю я был не прав в написании вопроса и за это извеняюсь. Буду рад если поможете. Так же у меня есть вопрос опять же по функции в классе, хочу заметить писал сам:
    Код (Text):
    1.  
    2. public function select ($what, $table, $where, $orand = NULL, $param = NULL) {
    3.     $values = array_values ($where);
    4.     $columns = array_keys ($where);
    5.     foreach ($columns as $key) {
    6.         $keys = $key . " = ?";
    7.         $mark[] = $keys;
    8.     }
    9.     $count_what = count($what);
    10.     if ($count_what > 1) {
    11.         $imploded_what = implode (', ', $what);
    12.     }
    13.     $count = count($where);
    14.         if ($count > 1) {
    15.             $imploded_value = implode(' ' . $orand . ' ', $mark);
    16.             $query = $this->DB_CONNECTOR->prepare("SELECT $imploded_what FROM $table WHERE $imploded_value $param");
    17.         }
    18.         else {
    19.             $imploded_value = implode ('', $mark);
    20.             $query = $this->DB_CONNECTOR->prepare("SELECT $imploded_what FROM $table WHERE $imploded_value $param");
    21.         }
    22.         $query->execute($values);
    23.         if (!$what == '*') {
    24.             $i = 0;
    25.             $name = array_values ($what);
    26.             while ($i <= $count_what) {
    27.                 $fetch = $query->fetch();
    28.                 $$name [$i] = $fetch [$i];
    29.                 $i++;
    30.             }
    31.         }
    32.     }
    Код верен и работает, кроме последних 6 строк (не считая "}"). Я хотел бы чтоб возращались сразу готовые переменные, с именами запрашиваемых колонок таблицы ($what) . Он мне возвращает только id. Но если написать echo $$name [$i]; после $$name [$i] = $fetch [$i]; скрипт выводит всю нужную инфу. Надеюсь поможете.

    Добавлено спустя 45 минут 11 секунд:
    Вопрос закрыт, я понял что нафиг эти запары не нужны) Но на фоне него возник другой, что если надо будет задать параметр WHERE id >199 напремер ведь на выходе получится WHERE id = >199. Как это исправить?