Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
WebProgrammer1
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
1

Как правильно описать сущности движка?

15.06.2014, 11:59. Просмотров 284. Ответов 1
Метки нет (Все метки)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
<?php
/**
 * Описывает форум как объект
 * @version 0.0.1
 * @package Core
 * @subpackage Objects
 */
class Forum {
    /**
    * ID форума
    * @var int
    */
    private $id = 0;
    
    /**
    * ID категории
    * @var int
    */
    private $cat_id = 0;
    
    /**
    * ID родительского форума
    * @var int
    */
    private $parent_id = -1;
    
    /**
    * Название форума
    * @var string
    */
    private $title = '';
    
    /**
    * Количество сообщений в форума
    * @var int
    */
    private $posts = 0;
    
    /**
    * Количество тем в форума
    * @var int
    */
    private $topics = 0;
    
    /**
    * ID темы с последним сообщением
    * @var int
    */
    private $last_topic_id = 0;
    
    /**
    * Название темы с последним сообщением
    * @var string
    */
    private $last_topic_title = '';
    
    /**
    * Время добавления последнего сообщения
    * @var int
    */
    private $last_time = 0;
    
    /**
    * ID пользователя, который добавил
    * последнее сообщение
    * @var int
    */
    private $last_user_id = 0;
    
    /**
    * Логин пользователя, который добавил
    * последнее сообщение
    * @var string
    */
    private $last_user_name = '';
    
    /**
    * Позиция форума
    * @var string
    */
    private $position = 0;
    
    /**
    * Сериализованный массив со списком прочитавших
    * @var string
    */
    private $read_data = array();
    
    /**
    * Флаг нового форума
    * @var bool
    */
    private $_New = false;
 
    /**
    * Конструктор класса
    * @param int $id ID форума
    * @param string $where По какому полю получать форум
    * @return bool
    */
    public function __construct($id=-1, $where='id=?i') {
        if ($id == -1) {
            $this->_New = true;
            return false;
        }
    
        $Forum = db::getRow('SELECT * FROM exbb_forums WHERE '.$where, $id);        
        
        if (!isset($Forum['id'])) {
            throw new Exception('Такого форума не существует!');
        }
 
        $this->id = $Forum['id'];
        $this->cat_id = $Forum['cat_id'];
        $this->parent_id = $Forum['parent_id'];
        $this->title = $Forum['title'];
        $this->posts = $Forum['posts'];
        $this->topics = $Forum['topics'];
        $this->last_topic_id = $Forum['last_topic_id'];
        $this->last_topic_title = $Forum['last_topic_title'];
        $this->last_time = $Forum['last_time'];
        $this->last_user_id = $Forum['last_user_id'];
        $this->last_user_name = $Forum['last_user_name'];
        $this->position = $Forum['position'];
 
        return true;
    }       
        
    /**
    * Создаёт объект из массива
    * @param array $Forum массив с данными форума
    * @return void
    */
    public function createFromArray($Forum) {
        $this->id = $Forum['id'];
        $this->cat_id = $Forum['cat_id'];
        $this->parent_id = $Forum['parent_id'];
        $this->title = $Forum['title'];
        $this->posts = $Forum['posts'];
        $this->topics = $Forum['topics'];
        $this->last_topic_id = $Forum['last_topic_id'];
        $this->last_topic_title = $Forum['last_topic_title'];
        $this->last_time = $Forum['last_time'];
        $this->last_user_id = $Forum['last_user_id'];
        $this->last_user_name = $Forum['last_user_name'];
        $this->position = $Forum['position'];
        $this->_New = false;
    }
        
    /**
    * Возвращает ID форума
    * @return int
    */
    public function getId() {
        return $this->id;
    }
 
    /**
    * Возвращает ID категории
    * @return int
    */
    public function getCatId() {
        return $this->cat_id;
    }
 
    /**
    * Устанавливает ID категории
    * @param int $CatId ID категории
    * @return void
    */
    public function setCatId($CatId) {
        $this->cat_id= $CatId;
    }
 
    /**
    * Возвращает ID родительского форума
    * @return int
    */
    public function getParentId() {
        return $this->parent_id;
    }
 
    /**
    * Устанавливает ID родительского форума
    * @param int $ParentId ID родительского форума
    * @return void
    */
    public function setParentId($ParentId) {
        $this->parent_id= $ParentId;
    }
    
...............................
    /**
    * Сохраняет форум в БД
    * @return void
    */
    public function save() {
        if ($this->_New == true) {
            db::query('INSERT INTO exbb_forums SET cat_id=?i, parent_id=?i, title=?s, posts=?i, topics=?i, last_topic_id=?i, last_topic_title=?s, last_time=?i, last_user_id=?i, last_user_name=?s, position=?i, read_data=?s',
            $this->cat_id, $this->parent_id, $this->title, $this->posts, $this->topics, $this->last_topic_id, $this->last_topic_title, $this->last_time, $this->last_user_id, $this->last_user_name, $this->position, serialize($this->read_data));
        }
        else {
            db::query('UPDATE exbb_forums SET cat_id=?i, parent_id=?i, title=?s, posts=?i, topics=?i, last_topic_id=?i, last_topic_title=?s, last_time=?i, last_user_id=?i, last_user_name=?s, position=?i, read_data=?s WHERE id=?i',
            $this->cat_id, $this->parent_id, $this->title, $this->posts, $this->topics, $this->last_topic_id, $this->last_topic_title, $this->last_time, $this->last_user_id, $this->last_user_name, $this->position, serialize($this->read_data), $this->id);
        }
    }
 
    /**
    * Удаляет форум из БД
    * @return void
    */
    public function delete() {
        if ($this->_New == true) {
            throw new Exception('Ошибка удаления форума!');
        }
        
        db::query('DELETE FROM exbb_forums WHERE id=?i', $this->id);
    }
}
есть класс, который описывает сущность "Форум" (пишу форумный движок). Для каждого поля в базе данных есть свойство в классе и 2 метода (получить, изменить). Со временем их становится довольно много.
При добавлении нового поля в базу данных приходится создавать свойство класса и создавать для него 2 метода.

Может быть лучше будет объявить свойства не приватными, а публичными, а методы убрать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2014, 11:59
Ответы с готовыми решениями:

Как отделать админку от остальной части движка?
Здравствуйте. В учебных целях имеется проект интернет магазина php+mvc+oop, но я хочу админку...

Как правильно описать select?
Здравствуйте! есть форма отправки, в которой имеется select &lt;span&gt;Цвет: &lt;select&gt;...

Как узнать требования движка
Здравствуйте. Подскажите, как можно узнать требования движка написанного на PHP. То есть какую...

Html -сущности
Добрый день. Такая вот проблема. Достаю из бд строку '/room.htm?id=$_SESSION'. Как вы понимаете,...

Мнемоники (сущности) спецсимволов
Первый и третий используются в html. А другие два где применяются в Веб программировании ?

1
ads
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
15.06.2014, 13:44 2
Цитата Сообщение от WebProgrammer1 Посмотреть сообщение
Может быть лучше будет объявить свойства не приватными, а публичными, а методы убрать?
в вашем примере не имеет никакого смысла использовать методы для доступа к свойствам. Ведь нет же никаких условий доступа на чтение и на запись. Поэтому в данном конкретном случае можно использовать публичные свойства
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2014, 13:44

Выборка из сущности и вывод информации :)
Доброе утро! Проблема заключается со знаниями sql. (На стадии изучения) Суть проблемы: Есть...

Как правильно описать метод внутри другого метода одного и того же класса?
Извияюсь за возможно глупый вопрос, но ООП тема для меня новая.Вот так выглядел метод класса в...

Как правильно отобразить на экране сущности и добавление полей к сущности
Есть примеры привязки бд с не тепезированным набором данных Как правильно отобразить на экране...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru