首页
学习
活动
专区
圈层
工具
发布

尝试OOP
EN

Stack Overflow用户
提问于 2013-01-31 07:29:44
回答 1查看 127关注 0票数 2

我决定开始或尝试开始为我的PHP应用程序编写OOP代码。这是我的第一节课。这个类的目的是创建一个表单并构建不同的元素。请让我知道它是否在正确的轨道上。这些字段已经存储在数据库中。优先级参数目前还没有做任何事情,但会突出这个问题。

代码语言:javascript
复制
//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']);
EN

回答 1

Stack Overflow用户

发布于 2013-01-31 07:40:40

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

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

当您以面向对象的方式编写项目代码时,您不会被强制使用类。当您觉得需要一大堆数据时,您应该使用类,并使这些数据只以您想要的方式访问。

在你的代码中,我并没有把这个类看作是一个对象,而是一堆由一个本不应该存在的类链接在一起的助手函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14615838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档