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.
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
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);
}