试图在数组中调用对象方法

时间:2013-11-06 18:14:10

标签: php forms oop object input

我正在学习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那样做。但是,它是一个但不同的。

2 个答案:

答案 0 :(得分: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的可见性...虽然它们将默认为公共,除非另有定义,明确定义的可见性确实使其立即显而易见

答案 1 :(得分:1)

您不是指您的班级成员:

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

应该是:

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