php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.12.2011, 19:20  
HHP
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
HHP befindet sich auf einem aufstrebenden Ast
Standard Neues Object von Object erzeugen lassen OOP

nabend,

ich habe ein kleines Problem. Ich bin gerade dabei eine Klasse für das Generieren von HTML-Formularen zu erstellen. Ich habe mir etwas Anregung besorgt, auf einer Seite wo beschrieben wurde, wie die dortige Klasse funktioniert.

Hängen geblieben bin ich an folgendem Punkt:

Man erstellt eine Klasse für das Formular:
$form= new Formular("TestForm", "POST");

um dann Elemente hinzuzufügen:

$form->addElement(...);

Nun frage ich mich allerdings, wie ich die daten in addElement verarbeite. Wie speicher ich die einzelnen erstellten Elemente? In einem Array?
Ich will ja am Ende alles mithilfe einer funktion ausgeben lassen.

Danke schonmal.

Edit: Mir ist gerade aufgefallen das der Titel nichtmehr passt. Sry dafür!

Geändert von HHP (18.12.2011 um 19:25 Uhr).
HHP ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.12.2011, 19:39  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Nun frage ich mich allerdings, wie ich die daten in addElement verarbeite. Wie speicher ich die einzelnen erstellten Elemente? In einem Array?
Verstehe die Frage nicht... addElement() hat eine vorgegebene Methodensignatur, die es zu befolgen gilt. Intern werden wohl arrays zur Speicherung verwendet, die Elemente könnten Objekte sei. Was wird denn an addElement() übergeben?

Zitat:
Ich will ja am Ende alles mithilfe einer funktion ausgeben lassen.
Was hindert dich? Die Funktion benutzt das Array (bzw. die darin enthaltenen Elemente) und "gibt sie aus".
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 18.12.2011, 21:46  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von HHP Beitrag anzeigen
nabend,

ich habe ein kleines Problem. Ich bin gerade dabei eine Klasse für das Generieren von HTML-Formularen zu erstellen. Ich habe mir etwas Anregung besorgt, auf einer Seite wo beschrieben wurde, wie die dortige Klasse funktioniert.
Nur mal so als PROTIP: Es gibt fertige Klassen, die sowas erledigen. Die primitivsten arbeiten direkt auf DOM-Node-Basis. Es gibt aber auch einige, die dir das Wühlen in den Untiefen der Node-Bäume abnehmen und gleich Formulare zusammensetzen.

Zitat:
Hängen geblieben bin ich an folgendem Punkt:

Man erstellt eine Klasse für das Formular:
$form= new Formular("TestForm", "POST");

um dann Elemente hinzuzufügen:

$form->addElement(...);

Nun frage ich mich allerdings, wie ich die daten in addElement verarbeite. Wie speicher ich die einzelnen erstellten Elemente? In einem Array?
Beispielsweise. Da ein Array in PHP die Standard-Collection-Datenstruktur ist, greift man meist auf diese zurück. Prinzipiell könntest du auch eine Art doppelt-verkettete Liste bauen, in der die Kind-Nodes rumhängen.

Zitat:
Ich will ja am Ende alles mithilfe einer funktion ausgeben lassen.
...
Auch das ist kein Problem. Alle Node-Objekte erben von der gleichen Basis-Struktur, die eine Funktion enthält, die aus sich selbst HTML-Code erzeugt. Um dann die Kind-Nodes zu HTML zu machen ruft die "Mutter" einfach der Reihe nach die HTML-Render-Funktion der Kinder auf. Etwa so:

PHP-Code:
class html_node {
    function 
__construct() {
        
$this->children = array ();
    }

    function 
addElement(html_node $child) {
        
$this->children[] = $child;
        return 
$this;
    }

    function 
as_html() {
        
$html '';

        
// render the current node itself
        // ...

        // render children
        
foreach ($this->children as $child) {
            
$html .= $child->as_html();
        }

        
// render the current node's end-tag (if needed)
        // ...

        
return $html;
    }

    function 
__toString() {
        
// oder was anderes Nuetzliches
        
return $this->as_html();
    }
}

class 
html_form extends html_node {
    
// ...

Falls du das aber nicht zu Lernzwecken betreibst, würde ich dir raten, eine der fertigen Klassen zu benutzen, anstatt das Rad neu zu erfinden. Es gibt nämlich eine Menge Dinge zu handhaben wie: HTML-Escaping von Attributen, vernünftige Formatierung des HTML-Quelltextes (Einrückung usw., damit man das Debuggen kann) usw.
fireweasel ist offline   Mit Zitat antworten
Alt 19.12.2011, 00:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Schau dir mal das Zend Framework an, speziell Zend_Form und Zend_Form_Element. Da wird das aehnlich gemacht, kannst dir ja was abgucken oder es gleich selbst verwenden.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Soap response stdclass Object ausgeben Agrippa PHP Einsteiger 2 18.12.2011 01:52
[Erledigt] PDF im Browser Streamen PiXeL1337 PHP Einsteiger 22 08.09.2011 16:24
Review von "Pipelines" in OOP (neues Framework) ZodiacXP Sonstige 6 28.02.2011 18:52
xpath Ergebnisse in File speichern BOSSE123 PHP Tipps 2010 12 11.11.2010 09:50
[Erledigt] Object + Array + Object ausgeben Roflkid PHP-Fortgeschrittene 3 17.05.2009 17:28
Persistence Framework #Avedo Software-Design 37 28.03.2009 17:32
ein neues Object im Konstruktor der Klasse phpbeginner PHP Tipps 2006 7 14.05.2006 15:00
oop: erstellt immer neues object :( N!cKY PHP-Fortgeschrittene 2 15.02.2006 01:11
Gibt keine Ausgabe aus socke PHP Tipps 2005-2 9 31.08.2005 15:39
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php standard object erzeugen, php new objekt in einer klasse, zend framework formular aus mehreren formularen zusammensetzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum