Skoro Cię to interesuje, to proszę bardzo: po prostu zrobiłem sobie klasę, której obiekty reprezentowały formularze. Dodatkowo, takiemu tworowi nadawałem zawsze nazwę, żeby było wiadomo, co zostało wysłane. Przez dziedziczenie rozszerzałem sobie klasę bazową, tworząc właściwe rodzaje formularzy, np. do dodawania użytkowników itd.
Zrobienie kilku kroków sprowadzało się do tego, że dla każdego kroku robiłeś sobie klasę formularza, albo odpowiednio konfigurowałeś obiekt klasy bazowej. Później wszystko łączyłeś, tworząc formularz wielokrokowy:
Kod
// robimy obiekty dla poszczegolnych krokow
$form1 = new formularz1('foo');
$form2 = new formularz2('foo');
$form3 = new formularz3('foo');
// laczymy je
$form1->setNextStep($form2);
$form2->setNextStep($form3);
// wykonujemy
if($form1->execute())
{
// formularz przetworzony, mamy wszystkie dane
}
Przy formularzu w HTML zapisuję numer kroku. Dzięki temu metoda
execute() może określić, czy ma wyświetlać kolejny krok, czy zwrócić kontrolę skryptowi, bo doszliśmy do końca.
Oczywiście całość w moim przypadku była jeszcze zintegrowana mocno z systemem szablonów i systemem kontroli danych - niestety biblioteki nie doprowadziłem do etapu 100% stabilnego, ale będę za niedługo pisać coś działającego na podobnych zasadach, tylko już lepiej zaprojektowanego.