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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы, преимущества 
:(
    Опции темы
Gold Dragon
Дата 4.5.2005, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Может я вообще всё через Ж... делаю, подскажите тогда как...

У меня в базе храняться сведения о человеке. Я их достаю и сую в массив. А потом уже с ними работаю.


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sardar
Дата 4.5.2005, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Вот пример, даёт быстрый доступ до инфу юзера и также позволяет в экстренной ситуации выключить аккаунт пользователя(параноя это образ жизни smile ).
Представим что у нас есть окружение($info), в окружении шаблонизатор, менеджер входных данных(экранирует всякую лажу, валидация и фильтрация) и другое.

Код

//класс несущий инфу о юзере
class UserInfo {
//статический метод, собираюший всех юзеров
   function &getAllUsersInfo() {
      global $config, $info; //конфиг и окружение, в окружении шаблонизатор и т.п.
      $r = mysql_query("SELECT * FROM {$config['table_persona']} WHERE disabled!=1") or $info['page']->criticalMessage("UserInfo.getAllUsersInfo: Can't read DB");
      $ret=array();
      while($row=mysql_fetch_assoc($r)) $ret[]=& new UserInfo($fieldinfo, $row);
      mysql_free_result($r);
      return $ret;
   }

//достать  юзера по ИД. Если не найден, то null
   function getUserById($id) {
      global $config, $info;
      $r = mysql_query("SELECT * FROM {$config['table_persona']} WHERE ID='".intval($id)."'") or $info['page']->criticalMessage("UserInfo.getUserById: Can't read DB");
      if(mysql_num_rows($r)!=1) return null;
      $ret= new UserInfo(mysql_fetch_assoc($r));
      mysql_free_result($r);
      return $ret;
   }


   //инфа о юзере. обычно кидаю всё в ассоциативный массив
   var $private_info; //имя, фамилия и т.п.
   var $sys_info; //время создания и т.п.
   //var ....

   //по сути приватный конструктор, здесь мы определяемся с полями таблицы
   function UserInfo($dbrow) {
      global $config, $info;
      //мы заюзали mysql_free_result, следовтельно из $dbrow нужно всё достать
      $this->private_info['name']=$dbrow['usr_name'];
      $this->private_info['birth date']=date($config['dateformat'], $dbrow['bdate_timestamp']);
      $this->private_info['birth_date_timestamp']=$dbrow['bdate_timestamp'];
      //.....
      //sys info
      $this->sys_info['ID']=$dbrow['id'];
      $this->sys_info['disabled']=$dbrow['disabled'];
      //.....
      //можно добавить какие то еще фичи, например данные сессии
   }

//личная инфа юзера в удобном ассоциативном массиве
   function getInfo() {
     return $this->private_info;
   }

//какая то системная инфа
   function getCreationDate() {
     return $this->sys_info['creation date'];
   }
//.....


   //для различных админок иногда важно отключить юзера без подзарузки
   //различных менеджеров, если например выявленна атака хакера.
   function disableAccount() {
      global $config, $info;
      mysql_query("UPDATE {$config['table_persona']} SET disabled=1 WHERE ID='".intval($this->sys_info['ID']). "'") or $info['page']->sysMessage("UserInfo.disableAccount: Can't write to DB");
      //можно еще в логи писануть...
   }
   function isDisabled() {
      return $this->sys_info['disabled']>0;
   }
}


//пример
$allUsers=& UserInfo::getAllUsersInfo();
foreach($allUsers as $user) {
   print_r($user->getInfo());
}

$user=UserInfo::getUserById($info['input']->request('user_id'));
print_r($user->getInfo());



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Gold Dragon
Дата 6.5.2005, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Цитата(Sardar @ 4.5.2005, 19:35)
Представим что у нас есть окружение($info), в окружении шаблонизатор, менеджер входных данных(экранирует всякую лажу, валидация и фильтрация) и другое.

Если честно, для меня это не понятно smile

Наверное для меня это ещё сложно. Буду разбираться...



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sardar
Дата 6.5.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(Red @ 6.5.2005, 07:37)
Если честно, для меня это не понятно

Просто массив в котором хранятся обьекты общего назначения. Например менеджер страниц(page), содержит шаблонизатор, буфферизует весь вывод, если происходит ошибка, то вместо die("сообщение") выйдет человеческая страница с дальнейшими движениями.
В окружении логгер, пишущий ошибки в лог. Менеджер ввода, задача которого проверять и форматировать ввод. Например если писать $_GET['test'] - то вылезет нотайс, если переменная не была переданна. Менеджер даёт метод get("test", "дофлтовое значение") - если переменная не была переданна, то возвратиться дефолтовое. Мне так удобно.

Короче окружение это список обьектов и функций, общего назначения, которые нужны при каждом запросе. Естественно обьекты(классы) должны быть лёгкими и быстрыми на загрузку.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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