Я решил начать или попытаться начать кодирование в ООП для своих приложений PHP. вот мой первый класс. цель этого класса – начать форму и построить различные элементы. сообщите мне, если это даже на правильном пути. Поля уже хранятся в базе данных. приоритетный параметр еще ничего не делает, но выделит вопрос.
//Form Class <?php class form { function genQuestion ($id) { $type = $this->getQuestionType($id); $priority = $this->getQuestionPriority($id); if ($field['type'] == "text") { $html .= $this->add_text_field($id, $priority); } if ($field['type'] == "select") { $html .= $this->add_select_field($id, $priority); } if ($this->type == 'radio') { $html .= $this->add_radio_field($id, $priority); } if ($field['type'] == "checkbox") { $html .= $this->add_checkbox_field($id, $priority); } return $html; } function getQuestionType ($id) { $field_query = "SELECT type FROM fields WHERE id = '$id'"; $field = mysql_query($field_query); $field = mysql_fetch_assoc($field); $this->type = $field['type']; } function getQuestionPriority ($id) { $field_query = "SELECT priority FROM fields WHERE id = '$id'"; $field = mysql_query($field_query); $field = mysql_fetch_assoc($field); $this->type = $field['priority']; } function add_text_field($id) { $fields_query = "SELECT * FROM fields WHERE id = '$id'"; $fields = mysql_query($fields_query); $field = mysql_fetch_assoc($fields); $content .= '<div><label> ' . $field['field'] . ': </label>'; $content .= '<input type="text" name="' . $field['id'] . '"></div>'; return $content; } function add_select_field($id) { $fields_query = "SELECT * FROM fields WHERE id = '$id'"; $fields = mysql_query($fields_query); $field = mysql_fetch_assoc($fields); $content .= '<div><label> ' . $field['field'] . ': </label>'; $options = explode('|', $field['options']); $content .= '<select name="' . $field['id'] . '">'; while (list($key, $value) = each($labels)) { $content .= '<option value="' . $key . '"> ' . $value . '</option>'; } $content .= '</select></div>'; return $content; } function add_radio_field($id) { $fields_query = "SELECT * FROM fields WHERE id = '$id'"; $fields = mysql_query($fields_query); $field = mysql_fetch_assoc($fields); $content .= '<div style="float: left; margin: 0 auto; width: 500px; text-align: right; clear: both;"><div style="float: left; width: 200px; margin-right: 25px;"><label> ' . $field['field'] . ': </label></div>'; $options = explode('|', $field['options']); while (list($key, $value) = each($options)) { $content .= '<div style="float: left; margin-right: 7px;">' . $value . '</div><div style="float: left; margin-right: 17px;"><input type="radio" name="' . $field['id'] . '" value="' . $key . '" /></div>'; } $content .= '</div>'; return $content; } function add_checkbox_field($id) { $fields_query = "SELECT * FROM fields WHERE id = '$id'"; $fields = mysql_query($fields_query); $field = mysql_fetch_assoc($fields); $content .= '<div><label> ' . $field['field'] . ': </label>'; $content .= '<input type="checkbox" name="' . $field['id'] . '" value="' . $field['options'] . '" /> ' . $field['labels'] . '</div>'; return $content; } } ?> //Controller $fields_quesry = "SELECT * FROM fields"; $fields = mysql_query($fields_quesry); $form = new form; $form->genQuestion($field['id']);
Точка ООП – это не просто использование классов. Является ли на самом деле объектно-ориентированным. Что это значит?
Процедурный код предназначен для создания программы в виде серии алгоритмов. OOP-код нацелен вместо этого на просмотр программы как серии объектов, которые заполняются (обычно) частными данными, которыми управляет сам объект.
Когда вы кодируете проект OOP, вы не должны использовать классы. Вы должны использовать классы, когда вы чувствуете необходимость иметь кучу данных и сделать эти данные доступными только так, как вы хотите.
В вашем коде я не вижу этот класс как объект, а скорее набор вспомогательных функций, связанных между собой классом, которого на самом деле не должно быть.