2

PHP アプリの OOP でのコーディングを開始するか、開始しようとすることにしました。これが私の最初のクラスです。このクラスの目的は、フォームを開始してさまざまな要素を構築することです。正しい軌道に乗っているかどうか教えてください。フィールドはすでにデータベースに保存されています。優先度パラメーターはまだ何もしていませんが、質問を強調表示します。

//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 に答える