2

我决定开始或尝试开始在 OOP 中为我的 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']);
4

1 回答 1

2

OOP 的重点不仅仅是使用类。是真正感觉到面向对象。这是什么意思?

程序代码旨在将程序制作为一系列算法。相反,OOP 代码旨在将程序视为一系列对象,这些对象填充了(通常)由对象本身管理的私有数据。

当您以 OOP 方式编写项目时,您不会被迫使用类。当您觉得需要拥有大量数据并仅以您想要的方式访问这些数据时,您应该使用类。

在您的代码中,我没有将该类视为一个对象,而是将一堆帮助函数由一个实际上不应该存在的类链接在一起。

于 2013-01-30T23:40:40.103 回答