Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Укоротить код по получению массива засчет класса 
V
    Опции темы
Win MK 32
Дата 10.6.2014, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 492
Регистрация: 15.7.2002

Репутация: нет
Всего: нет



Есть примерно такой код

Код

class sgm_users{
//...
    public function get_by_id($id){
        if(is_int($id)){
            $this->query = $this->dbconnection->prepare("SELECT * FROM sgm_users WHERE id=".$id.";");
            $this->query->execute();
            $this->query->setFetchMode(PDO::FETCH_ASSOC);
            if($row = $this->query->fetch()) return $row;
        }
    }
//...
}
//...
$users_obj = new sgm_users();
array $user101 = $users_obj->get_by_id(101);

Как я это понимаю? $users_obj - это некий объект класса sgm_users. Он был нужен, а потом вдруг не нужОн стал smile
А вот $user101 - некий объект или массив с данными пользователя (поля профиля, пароль и т.д.), не связанный с классом алиментами и прочими штучками-свистелками.

Я хочу чтобы подобная кондиция достигалась более коротко:
Код
$user101 = new sgm_users(101);

Как это сделать?
P.S.
 Очень прошу, НЕ думайте, что задача сводится к конвертации объекта в массив

Это сообщение отредактировал(а) Win MK 32 - 10.6.2014, 14:47
PM   Вверх
Aliance
Дата 10.6.2014, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Ну так напишите логику в конструкторе.

Код

class sgm_users {
//...
    public function __construct($id) {
        return $this->_get_by_id($id);
    }

    private function _get_by_id($id) {
        if(is_int($id)){
            $this->query = $this->dbconnection->prepare("SELECT * FROM sgm_users WHERE id=".$id.";");
            $this->query->execute();
            $this->query->setFetchMode(PDO::FETCH_ASSOC);
            if($row = $this->query->fetch()) return $row;
        }
    }
//...
}
//...
$user101 = new sgm_users(101);


И что этот вопрос делает в треде "для профи" не понятно. Переношу в общие вопросы.

Добавлено через 3 минуты и 10 секунд
Далее по качеству кода...

1. Метод get_by_id возвращает значение, только если принимает числовой аргумент. В противном случе ничего не возвращается, но и не кидается исключение. Это логически не верно.
2. Какой смысл PDO пользоваться подготовленными выражениями, если вы делаете уязвимую конкатенацию в запросе? Читать пример здесь.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.