0

Im learning php and i made this simple class for creating form.

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."'/>";
}

}

And then Im calling it like this

<?php include "form.php";

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

but it does absolutely nothing. :( Dont you know whats wrong with it?

I think the problem may be with calling the object in array or saving them to array. Im used to do it like that from java. but yes, its a but different.

2 Answers 2

2
function addText($name, $label){

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

not

function addText($name, $label){

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

You should probably also add a visibility of public to the methods in your classes... while they'll default to public anyway unless defined otherwise, an explicitly defined visibility does make it immediately obvious

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you very much guys!! I was looking for the mistake nearly 20 minutes and I didnt see it.
1

You are not referring to your class member:

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

Should be:

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

1 Comment

Thank you very much guys!! I was looking for the mistake nearly 20 minutes and I didnt see it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.