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
Форумы портала PHP.SU :: Версия для печати :: непонятно про ООП
Форумы портала PHP.SU » » Объектно-ориентированное программирование » непонятно про ООП

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

1. smumrik - 24 Октября, 2011 - 10:39:39 - перейти к сообщению
привет! не могу разобраться, как правильно создать приложение на ООП.
кратко суть: есть студенты, группы, кафедры, фак-ты.
думаю тут понятна иерархия?
есть класс Students - при создании объекта становится доступна информация о студенте
дальше я хочу получить информацию о его группу (имя группы), о кафедре, к которой эта группа принадлежит, и фак-те конечно. (в mysql имеются соответственные таблицы - студенты, группы ит.д.)
прошу натолкнуть на мысли - как это правильно реализовать?
создавать соответствующие классы для групп, кафедр?
2. caballero - 24 Октября, 2011 - 12:46:12 - перейти к сообщению
конечно создать
и главное надо понимать что потом с ними делать
3. smumrik - 24 Октября, 2011 - 13:31:26 - перейти к сообщению
caballero что делать...
к примеру, я создал объект - студент Вася, и теперь мне нужно узнать название его группы.
ID Васиной группы я знаю, теперь мне нужно с этим ID обратиться к классу Group и "попросить" назвать имя соответствующей группы.
правильно рассуждаю?
PHP:
скопировать код в буфер обмена
  1. class Groups {
  2. // какие-то переменные?
  3. var $name
  4.      function __construct($id) {
  5.           // тут запрос к БД: по ID получить NAME из таблицы GROUPS
  6.           $this->name = $result[0]; // в $result[0] ответ БД
  7.       }
  8.      function getNameGroup() {
  9. return $this->name;
  10.       }
  11. }
  12.  
  13. $groupVasja = new Groups($VasjaID);
  14. $groupName = $groupVasja->getNameGroup();
  15. print $groupName;


так верно?
4. DeepVarvar - 24 Октября, 2011 - 14:43:32 - перейти к сообщению
smumrik пишет:
так верно?
Да, верно. Но!!!
Продолжайте, продолжайте - дальше сами поймете что будет нужно.
Осознание удобства, скорости и правильного проектирования приложения придет не сразу.
Нужно наступать на грабли - лоб покроется мозолями, а удары выправят извилины в нужную сторону.
Без практики - никуда. Подмигивание
5. smumrik - 24 Октября, 2011 - 14:56:17 - перейти к сообщению
DeepVarvar а можно спросить совет?
вот я хочу как-то считать кол-во сообщений, относящихся к фак-там, кафедрам, группам.
для этого лучше создать поля "Count" в соответствующих таблицах рядом с NAME и ID?
или в отдельные таблицы вынести лучше? Не понял
6. DeepVarvar - 24 Октября, 2011 - 15:12:20 - перейти к сообщению
smumrik пишет:
как-то считать кол-во сообщений
Незачем делать отдельные поля - их считают типа так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(*) cnt FROM messages WHERE id_kafedry = 646
7. smumrik - 24 Октября, 2011 - 15:17:13 - перейти к сообщению
DeepVarvar я думал так и сделать, но, мне нужен вывод этого числа чуть ли не на каждой странице сайта. да и число не одно, т.е. нес-ко запросов нужно.
8. DeepVarvar - 24 Октября, 2011 - 15:22:05 - перейти к сообщению
smumrik пишет:
т.е. нес-ко запросов нужно
Если обойдетесь 5-10 запросами на страницу для всех данных - считайте это победой.
9. Stierus - 25 Октября, 2011 - 09:45:14 - перейти к сообщению
Цитата:
но, мне нужен вывод этого числа чуть ли не на каждой странице сайта
Для этого результаты запросов кэшируют. Тем более, что информация из разряда "у нас уже 25 студентов" не критическая, абсолютно ничего страшного, если эта информация будет запаздывать минут на 5 от бд Улыбка
10. smumrik - 25 Октября, 2011 - 16:48:26 - перейти к сообщению
а помогите разобраться, как лучше сделать проверку прав доступа?
у меня в системе есть, как я уже говорил, студенты, а также преподаватели, модеры, и админы. каждому типу соответствует цифра (1-4) в поле TYPE таблицы USERS.
воспрос - как лучше проверять эти права в скриптах?

просто каждый раз проверять поле TYPE необходимого пользователя? типа if($row['TYPE']==3) { //можно делать действие, доступное модеру}
elseif($row['TYPE']==4) {// только для модератора}

или лучше создать в классе User методы типа isModer() и isAdmin(), проверяющие права авторизованного и выдающии либо true либо false?
но тогда прежде чем вызывать эти методы нужно проверять налицие авторизации (наличие объекта классаUser)

как удачней сделать? Не понял
на мой взгляд второй способ более удобен, т.к. в случае внесения изменений в иерархию типов пользователей сайта нужно править меньше кода

 

Powered by ExBB FM 1.0 RC1