HTMLSelect Class

Door Kees Schepers, 21 jaar geleden, 2.933x bekeken

Misschien lijkt het je op het eerste gezicht deze klasse overbodig, echter als je dieper in het OOP verhaal duikt, en objecten gaat maken die dus verschillende HTML elementen genereert kun je hiermee zeker weten de voorbeelden eruit halen.

Voorbeeld:
Stel je hebt een form klasse met deze klasse kun je een formulier bouwen. Men kan form "questions" toevoegen door bijvoorbeeld $form->addSelect() te doen. De form klasse instantieert intern een select object en voegt hem toe aan zijn tree met "questions".

Ik ga ook meerder van deze klasse bouwen alleen moet ik kijken welke ik onder de open source norm zet. Deze klasse is wel open source, en mag je dus gratis gebruiken!

voordelen
- Fout tolerante HTML genereren
- Laat objecten het HTML werk doen
- Netter voor je code
- Gemakkelijk en snel een select box maken

uitbreiding
Je zou deze klasse kunnen uitbreiden door aan de magic __Set functie een aantal property's kunnen toevoegen. Ik heb de meest gebruikte toegevoegd.

Gebruik
Redelijk simpel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
$selectBox
= new select(array('test1','test2','test3','test4'));
$selectBox->id = 'selectBox1';
$selectBox->onchange = 'alert(this.value);';
echo $selectBox->getHTML();
?>

Gesponsorde koppelingen

PHP script bestanden

  1. htmlselect-class

 

Er zijn 9 reacties op 'Htmlselect class'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Roy Bongers
Roy Bongers
21 jaar geleden
 
0 +1 -0 -1
't is een mooi script :) . Ik had al vaker van DOM gehoord maar wat 't presies deed was me nog onduidelijk. Dit maakt 't echt gelijk een stuk duidelijker. Ik begrijp het hele achterliggende idee (mede vanuit mijn kennis van Java) maar ik vraag me toch af of dit allemaal wel zo ideaal is. Je krijgt een hele hoop php code erbij terwijl je met een simpele template parser 't zelfde voor elkaar krijgt. Eigenlijk ben je HTML gewoon weer opnieuw aan 't schrijven. Alle functionaliteit zit er in maar dan in een OO jasje. Ik vraag me dus af of 't niet dubbelzinnig is.

DOM gebruiken om XML documenten te bouwen lijkt me dan wel weer ideaal omdat je daar alles zelf kan bepalen. Het zal moeilijker zijn om met een template parser een XML document op te stellen die zeer dynamisch is.
Kees Schepers
kees Schepers
21 jaar geleden
 
0 +1 -0 -1
Bedankt voor je reactie.

dit is slechts een object, ik ben bezig met het schrijven van een hele libary. Ik ga deze objecten niet gebruiken voor een hele website te genereren maar factory objecten die grote lappen HTML genereren. Ik heb bijvoorbeeld een datagrid klasse die voor mij datagrids bouwt en in de presentation layer van deze klasse doe ik direct HTML naar een interne member schrijven. Enekele nadelen hiervan zijn dat ik iets direct output en geen controle meer heb over het geen wat ik al ge-output heb. Ook komt daarbij dat mijn code een stuk netter wordt en dat ieder gedeelte zijn eigen verantwooding heeft.

Echter vindt ik je wel deels gelijk hebben hoor, maar ik geloof er heilig in dat bij grote projecten (denk aan echte (webbased)applicaties zoals ERP systemen, content systemen (en nee niet alleen CMS), groot schalige websites hier het voordeel zeker zich voordeel in doet. Ook wordt zal het makkelijker worden voor module ontwikkelaars om diverse dingen te bouwen wat mijn uiteindelijke doel ook is.

Dit object is eigenlijk nog onder constructie, ik zal straks een groot deel van mijn HTML Layer hier posten en dan gaan we zeker de voordelen ervan zien! :D

vooralsnog bedankt voor je reactie roy!

Groeten,
Kees Schepers.
Jelmer -
Jelmer -
21 jaar geleden
 
0 +1 -0 -1
Mooi nuttig gebruik van Object overloading, echt een hele fijne manier om dit aan te pakken. Ook een leuk idee om PHP DOM erbij te betrekken, dat geeft natuurlijk wel weer een wereld van mogelijkheden.

Ik bedenk me net: Stel, je verandert hem zo dat hij 'DOMElement' extend, dan kan je hem dus direct al plakken aan een ander element (of document) zonder de getDomObject-functie. Dat lijkt mij nog mooier, en dan hoef je ook niet meer dubbelop bezig te gaan met een array van attributen, dat kan PHP DOM dan wel zelf regelen waneer jij $this->setAttribute en $this->getAttribute aaroept.
Kees Schepers
kees Schepers
21 jaar geleden
 
0 +1 -0 -1
Inderdaad over dat laatste heb je zeker een punt en heb ik zelf ook al over zitten denken. Deze klasse heb ik eerlijk gezegd in vogel vlucht gemaakt, en kan nog veel beter gemaakt worden. Echter weet ik niet goed goed hoe de DOMDocument klasse in elkaar zit en kan ik om die reden niet optimaal gebruik maken van dat object.

Echter zit ik nog met 1 probleem ik krijg het niet voor elkaar om XHTML wel-formed HTML code te genereren zonder dat hij de doctype ook mee print. Wellicht weet iemand hier meer over?
Menno
menno
21 jaar geleden
 
0 +1 -0 -1
wel fet script :P
Jelmer -
Jelmer -
21 jaar geleden
 
0 +1 -0 -1
Het was even heel erg lang zoeken, maar ik denk dat hier het antwoord is kees:
To create HTML document with doctype:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
$doctype
= DOMImplementation::createDocumentType("html",
               "-//W3C//DTD HTML 4.01//EN",
               "http://www.w3.org/TR/html4/strict.dtd");
/* of in jouw geval dan */
$doctype = DOMImplementation::createDocumentType('html',
                '-//W3C//DTD XHTML 1.0 Strict//EN',
                'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd');
$doc = DOMImplementation::createDocument(null, 'html', $doctype);
?>

bron: http://nl3.php.net/manual/nl/function.dom-domimplementation-createdocument.php
edit: hier nog een voorbeeld:
http://www.phpforum.de/archiv_28250_dynamisches@xmlfile@doctypenode_anzeigen.html
Kees Schepers
kees Schepers
21 jaar geleden
 
0 +1 -0 -1
Ja klopt enige probleem is dat hij alsnog de document type print...
Jelmer -
Jelmer -
21 jaar geleden
 
0 +1 -0 -1
In XHTML hoort er ook een <?xml.... ?> boven het document.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Kees Schepers
kees Schepers
21 jaar geleden
 
0 +1 -0 -1
Klopt, maar dat wil nou net niet omdat ik die zelf wil genereren :P maargoed, ik denk dat ik me eigen DOM ga schrijven, zit niks anders op.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. htmlselect-class

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.