0

我正在学习 php,我制作了这个简单的类来创建表单。

class form {

private $pole= array();

function addText($name, $label){

    $pole[] = new input($name, 'text', $name, $label);
}

function create(){
    foreach ($this->pole as $polozka) {
        $polozka->addInput();
    }
}
}

class input{

private $name;
private $type;
private $id;
private $label;

/*
 * $name, $type, $id, $label
 */
function __construct($name, $type, $id, $label){
    $this->name=$name;
    $this->type=$type;
    $this->id=$id;
    $this->label=$label;
}

function addInput(){
    echo "<label for='".$this->name.": '>".$this->label."<input type='".$this->type."' name='".$this->name."' id='".$this->id."'/>";
}

}

然后我这样称呼它

<?php include "form.php";

$form = new form();
$form->addText('jmeno', 'Jméno');
$form->addText('prijmeni', 'Příjmení');
$form->create();
?>

但它绝对没有任何作用。:( 你不知道有什么问题吗?

我认为问题可能在于调用数组中的对象或将它们保存到数组中。我以前从java中这样做过。但是,是的,它是不同的。

4

2 回答 2

2
function addText($name, $label){

    $this->pole[] = new input($name, 'text', $name, $label);
}

不是

function addText($name, $label){

    $pole[] = new input($name, 'text', $name, $label);
}

您可能还应该为public您的类中的方法添加可见性......虽然除非另有定义,否则它们将默认为公共,但明确定义的可见性确实使其立即显而易见

于 2013-11-06T18:16:44.823 回答
1

您不是指您的班级成员:

function addText($name, $label){
    $pole[] = new input($name, 'text', $name, $label);
}

应该:

function addText($name, $label){
    $this->pole[] = new input($name, 'text', $name, $label);
}
于 2013-11-06T18:16:45.667 回答