Chtěl sem, ale ty problémy lidí mě odradily :D
Nějak jsem to nepochopil, vzhledem k tomu, že a,b... jsou parametry, tak poté kořeny se vyjadřují pomocí těchto parametrů a parametry (pokud to není implicitně uvedeno) jsou nejčastěji z oboru Reálných čísel a množina takových řešení je nekonečná. (za předpokladu, že není jedno nebo žádné řešení)
Zkus více rozvést otázku, asi jsem si dostatečně nepochopil :D
Private se právěže vůbec neboj, používej HLAVNĚ private ... většinu času budeš chtít co nejvíce skrýt vnitřní implementaci :)
Rozhodně by bylo lepší něco jako
<?php
$form = new Form();
$form->addText('name','Název)->addRule('required', true);
$form->render();
s např. takovými třídami ... je to jen naprosto hrubý nástřel a není tam vidět spousta té "logiky" pod pokličkou :)
<?php
class Form
{
public function addText($name, $label) {}
public function addSubmit($name, $label) {}
public function addPassword($name, $label) {}
public function add...
public function render() {}
}
class FormElement
{
public function __construct($type, $attributes, $label, $value) {}
public function addRule($rule, $value) {}
public function render() {}
}
#7 JMM
Pokud chceš posílat znaky mimo ascii, musíš je projet funkcí url_encode() před odesláním a url_decode() při přijímání :)
A navíc vyhledávání se v 99% procentech případů má dělat přes GET, protože vyhledávání si přeci někdy budeš chtít uložit do bookmarků :)
Základních pár poznatků ... snad tě nakopnou správným směrem trochu (hlavně ta 4ka) :)
1. proč je název třídy množné číslo? instancuješ ($form = new Form()) JEDEN formulář, né více :)
2. proč ty public vlastnosti? chceš, aby ti někdo mohl pravidla takhle měnit zvenku? myslím si, že ne
3. přistupuješ k TextInput->form a Label->label ... určitě ti to nevyhazuje ani E_NOTICE? :)
4. proč třída TextInput dědí od formuláře? dědění je vztah "is" ... je snad textové políčko (a label) formulář? :) nikoliv -- formuláře obsahuje text inputy a labely, což je takzvaná kompozice (vztah "has")