simple OOP formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Developer

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail; Verantwoordelijk voor de front-end werkzaamheden; Naast de front-end werk je ook aan de backend. Hier ga je werken Als Full Stack Developer komt je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development

Bekijk vacature »

Back-end Developer C#

Functie omschrijving We are looking for a dutch native speaker Ben jij een ervaren back-end developer, die graag in een in-house functie wil werken? Passen de woorden innovatie, programmeren en teamspeler bij jou? Zoek niet verder en lees snel verder. Voor een echt familiebedrijf in de regio van Uden ben ik op zoek naar een back-end developer, die met name kennis heeft van C# en .NET. Jij gaat de interne applicaties verder optimaliseren en nieuwe features ontwikkelen. Verder ga je de volgende werkzaamheden uitvoeren: Ondersteunen gebruikers; Uitvoeren van analyses van de software/applicaties; Maken van functionele ontwerpen en deze door vertalen

Bekijk vacature »

API Developer Red Hat Fuse

Dit ga je doen Als API Developer zal je verantwoordelijk zijn voor het: het maken van API's en het correct laten draaien van de API's op het platform. Hierdoor kom je in aanraking met Red Hat Fuse, Springt Boot, 3Scale, Red Hat SSO, Openshift en Azure DevOps; zorgen voor de kwaliteit van de ontwikkeling, integratie en prestaties van de API's; zorgen voor een stabiel integratieplatform. Hier ga je werken Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap dat hoofdzakelijk op OpenShift, Azure en

Bekijk vacature »

SAP HANA Cloud Application Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12662 Introductie HANA Cloud Application Developer at a High Tech company. The company is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. This role is situated in the Big Data Analytics (BDA) Domain. The teams have mixture of young talent and senior specialists and have a

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Voor een leuke opdrachtgever zijn wij op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Hoofddorp. Binnen deze functie vervul je een onsite learning programma waarbij je aan de slag gaat met PHP en Laravel. Hierbij ben je voornamelijk werkzaam op verschillende klantlocaties en is het jouw taak om hun wensen en eisen

Bekijk vacature »

Front-end Developer vue.js node.js SaaS

Dit ga je doen Het ontwikkelen van nieuwe features die bijdragen aan de groei van de klanten van de organisatie; Je denkt mee over nieuwe innovaties, features en verbeteringen in de applicatiearchitectuur; Je draagt bij aan de continue ontwikkeling van jouw team doordat je elke dag streeft naar het verbeteren van jouw eigen prestaties; Je neemt actief deel aan Scrum meetings en de Frontend Guild. Hier ga je werken Voor een snel groeiend bedrijf de regio Nieuw Vennep zijn wij opzoek naar een ervaren Front-end Developer. De organisatie is actief in de e-commercebranche en ontzorgt haar klanten middels een SaaS-platform.

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior PHP (Laravel) Developer

Functie omschrijving Wij zijn op zoek naar een PHP Laravel Developer! Sta je aan het begin van je carrière en ben je op zoek naar een leuke baan? Lees dan verder! Voor een softwarebedrijf in omgeving van Schiphol zijn wij op zoek naar een ervaren PHP (Laravel) Developer. Je gaat je bezighouden met het ontwikkelen van innovatieve bedrijfsapplicaties. Samen met het team, bestaande uit designers en developers, maak je mooie oplossingen voor bedrijven in diverse branches. Je zorgt dat de opgeleverde websites perfect werken en de klant meer dan tevreden is. Je kunt rekenen op een afwisselende baan met leuke

Bekijk vacature »

Senior Mobile Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Senior Mobile Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Als Front-end developer samenwerken met de beste c

Functie Momenteel zijn we voor één van de projecten bij hun key partner, een voorloper in de energiesector, op zoek naar gedreven Front-end developers. Ze nemen de lead in dit project en werken uitsluitend met vooruitstrevende technologieën. Ze verwachten dat de technologie die hier wordt ontwikkeld uiteindelijk door veel meer grote corporates, in verschillende sectoren zal worden toegepast. Dit is dan ook een heel uitdagend project om aan mee te gaan werken. Het team bestaat o.a. uit User Experience designers, Data Scientists en Software Engineers. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van

Bekijk vacature »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

Experienced Lead Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Delft Vacature ID: 13301 Introductie We are seeking a Lead Java Developer for our team in the area of Delft. You will develop an application used exclusively by the engineers and geologists for site characterizations, which imports raw field and laboratory measurements for further processing, integration, ground modelling, and geotechnical analysis and reporting. The client/server application is entirely written in Java, and the server is hosted in the Amazon cloud, utilizing frameworks such as Spring and Hibernate, and connected to an MS SQL Server RDS instance. There is a trend towards using more

Bekijk vacature »

Pagina: 1 2 volgende »

Bas D L

Bas D L

05/11/2012 10:23:42
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
class cForm
{
    //var form tag
    private $_TagAction;
    private $_TagMethod;
    private $_TagName;
    private $_TagExtraAttr;
    
    //var form field
    private $_FieldType;
    private $_FieldName;
    private $_FieldValue;
    private $_FieldChecked;
    
    //var select tag
    private $_SelectName;
    private $_SelectOption;
    private $_SelectOptionSelected;
    
    //var button
    private $_ButtonValue;
    private $_ButtonName;

    public function __construct( $_TagAction , $_TagMethod , $_TagName , $_TagExtraAttr ){
        $this->_TagAction = $_TagAction;
        $this->_TagMethod = $_TagMethod;
        $this->_TagName = $_TagName;
        $this->_TagExtraAttr = $_TagExtraAttr;
        
    }


    public function getTagOpen(){
        return '<form action="' . $this->_TagAction . '" method="' . $this->_TagMethod . '" name="' . $this->_TagName .'" ' . $this->_TagExtraAttr . '>' . PHP_EOL;
    }

    
    public function setFormField( $FieldType , $FieldName , $FieldValue , $FieldChecked ){
        $this->_FieldType = $FieldType;
        $this->_FieldName = $FieldName;
        $this->_FieldValue = $FieldValue;
        $this->_FieldChecked = $FieldChecked;
    }
    
    
    public function getFormField(){
        return '<input type="' . $this->_FieldType . '" name="' . $this->_FieldName . '" value="' . $this->_FieldValue . '" ' . $this->_FieldChecked . '>'. PHP_EOL;
    }


    public function setSelectOpen($SelectName){
        $this->_SelectName = $SelectName;
    }

    public function getSelectOpen(){
        return '<select name="'.$this->_SelectName.'">';
    }


    public function setSelectOption( $SelectOption ,$SelectOptionSelected ){
        $this->_SelectOption = $SelectOption;
        $this->_SelectOptionSelected = $SelectOptionSelected;
    }


    public function getSelectOption(){
        return '<option' . $this->_SelectOptionSelected . '>' . $this->_SelectOption . '</option>' . PHP_EOL;
    }

    
    public function getSelectEnd(){
        return '</select>' . PHP_EOL;
    }


    public function setButton( $ButtonValue , $ButtonName ){
        $this->_ButtonValue = $ButtonValue;
        $this->_ButtonName = $ButtonName;
    }


    public function getButton(){
        return '<input type="submit" value="' . $this->_ButtonValue . '" name="'. $this->_ButtonName .'">' . PHP_EOL;
    }


    public function getTagEnd(){
        return '</form>' . PHP_EOL;
    }
    
}


$objForm = new cForm( '/' , 'post'  , 'test' , 'onsubmit="test"' );

//form start
echo $objForm->getTagOpen();

//text field
$objForm->setFormField('text','2', '' , '');
echo $objForm->getFormField();

//checkbox
$objForm->setFormField('checkbox','2', '' , 'checked="checked"');
echo $objForm->getFormField();

//selectbox

    // start selectbox

    $objForm->setSelectOpen('bas');
    echo $objForm->getSelectOpen();

    // option selectbox
    $objForm->setSelectOption('bas', ' selected');
    echo $objForm->getSelectOption();
    $objForm->setSelectOption('123', '');
    echo $objForm->getSelectOption();
    $objForm->setSelectOption('456', '');
    echo $objForm->getSelectOption();

    //end selectbox
    echo $objForm->getSelectEnd();

//button
$objForm->setButton('test type','test name' );
echo $objForm->getButton();

//form end
echo $objForm->getTagEnd();
?>
Gewijzigd op 05/11/2012 13:53:47 door Bas D L
 
PHP hulp

PHP hulp

25/12/2024 14:43:39
 
Wouter J

Wouter J

05/11/2012 13:51:23
Quote Anchor link
En nu?

Kun je aub 1 code blok verwijderen?
 
Bas D L

Bas D L

05/11/2012 13:54:47
Quote Anchor link
@wouter, done...
 
Wouter J

Wouter J

05/11/2012 13:55:31
Quote Anchor link
En dan nu de eerste vraag, wat moeten we hier mee?
 
Bas D L

Bas D L

05/11/2012 13:59:16
Quote Anchor link
Doordat ik de code heb gewijzigd is mijn vraag verdwenen :-$

Ben net begonnen met OOP get en Set.
Mijn vraag is of dit zo de juiste opzet is in OOP, of dat het geen OOP is of nog beter/naders kan.
 
Wouter J

Wouter J

05/11/2012 14:02:30
Quote Anchor link
Dit is totaal geen OOP, alleen maar een mooie klasse met functies erin.

En je hebt het de hele tijd over het leren van 'get' en 'set', maar je weet dat dat gewoon maar 2 functies zijn? We hebben ze een speciale naam gegeven omdat deze functies de meest voorkomende taken uitvoeren, eigenschappen instellen en verkrijgen. Maar van de rest is er niks vreemdst aan.

Qua OO heb je je te houden aan 1 hele grote basis regel: Elke klasse en elke methode heeft maar 1 verantwoordelijkheid, zodra er meer zijn splits je het op in meerdere klassen of meerdere methoden.
In jou geval heb je alles in 1 klasse gezet wat enorm indruist tegen deze regel. Schrijf allereerst maar eens op welke verantwoordelijkheden/taken je in deze applicatie hebt.
 
Gerard M

Gerard M

05/11/2012 14:03:24
Quote Anchor link
Interpretaties van OOP kunnen verschillen, maar ik zou zelf van buttons en inputfields ook losse classes maken. Buttons en inputfields kunnen zelfs een gemeenschappelijke superclass delen. Op deze manier zijn alle objecten verantwoordelijk voor hun eigen gedrag.

Het lastige is, "hoe praktisch is dit?" Want misschien wil je jouw inputfields in a een tabel of div stoppen, met de volgende code zal dat niet makkelijk lukken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$form
= new Form();
$form->add(new InputField("username");
$form->add(new InputField("password");
$form->add(new Button("click me"));

print $form->getHtml();
?>


Natuurlijk kan je dan van al je HTML tags ook classes maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$form
= new Form();
$div  = new Div();

$form->add($div);

// Form fields are nested in a div, which is nested in a form.
$div->add(new InputField("username"));
$div->add(new InputField("password"));
$div->add(new Button("click me"));

print $form->getHtml();
?>


Nu kan je doorgaan totdat je helemaal geen HTML meer ziet! Hoe praktisch dat is, laat ik in het midden. Kijk bijvoorbeeld eens naar: http://www.php.net/manual/en/intro.dom.php

Om terug te komen op jouw code, probeer er voor te zorgen dat Form zich alleen bezig houdt met zichzelf, en dat hij zo min mogelijk bewust is van de status van buttons en andere inputfields. Properties als "_ButtonValue" of "_FieldType" horen d'r niet in thuis. Denk ook eens na hoe goed jouw huidige setup werkt als je dropdown boxes, radio knoppen en checkboxes wilt toevoegen.
 
Bas D L

Bas D L

05/11/2012 14:14:47
Quote Anchor link
@Wouter en Gerard,
Kunnen jullie me een klein beetje op weg helpen dmv een goed formulier voorbeeldje?

@wouter
lijstje:
form start
form end
input fields
select
button
Gewijzigd op 05/11/2012 14:31:21 door Bas D L
 
Wouter J

Wouter J

05/11/2012 14:44:48
Quote Anchor link
Bas, al redelijk in de buurt. Als je het globaal neemt zou ik dit zeggen:

- FormRenderer (deze maakt de HTML van het formulier)
- FormElement (alle mogelijke elementen voor een formulier)
- FormBuilder (creëert een formulier)

Vervolgens heeft elke verantwoordelijkheid weer meerdere klassen. Zo kan je een HTMLFormRenderer maken of een andere formrenderer, kan zo snel even niks verzinnen. En een InputElement en een SelectElement die weer heel veel OptionElement klassen heeft en een ButtonElement.

De code wordt dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$formBuilder
= new FormBuilder();

$formBuilder
    ->add('name', 'text')
    ->
add('message', 'textarea')
;


$formFactory = new HTMLFormFactory($formBuilder);

echo $formFactory->render();
?>


In FormBuilder::add() maak je dan gebruik van de InputElement ect. om een element toe te voegen.
 
Bas D L

Bas D L

05/11/2012 14:53:27
Quote Anchor link
@Wouter,

Krijg je dan zo'n klasse-indeling?
class FormRenderHtml
{

}

class FormRenderElement
{
}

class FormBuilder
{
}
 
Wouter J

Wouter J

05/11/2012 15:09:44
Quote Anchor link
Dan ga je werken met overerving. Dat betekend dat 1 klasse alles van de andere klasse bevat, maar dat kan bewerken. Dat doe je met het extends keyword (wat uitbreiden betekend). Bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
class A
{
    public function foo()
    {

        return 'Foo!!';
    }
}


class B
{
    public function bar()
    {

        return 'Bar!!';
    }
}


$a = new A();
echo $a->foo(); // Foo!!

$b = new B();
echo $b->bar(); // Bar!!

// klasse C breidt klasse A uit, het krijgt alleen methoden en properties

class C extends A
{
    public function baz()
    {

        return 'Baz!!';
    }
}


$c = new C();
$c->foo(); // doordat C de A klasse uitbreid heb je gewoon toegang tot de methoden van A
$c->baz(); // maar ook zijn eigen methoden werken

// je kan ook methoden veranderen:

class D extends B
{
    // we 'overwriten' de bar() functie in B
    public function bar()
    {

        return 'Bar from class D!!';
    };
}


$d = new D();
echo $d->bar(); // deze roept de nieuwe methode aan in class D
?>


Dit ga je nu ook gebruiken in dit geval. Je hebt een hoofdklasse die je FormRenderer noemt. Deze klasse bevat alle functies die in elke renderer gelijk zijn. Vervolgens breiden we deze klasse uit in een andere klasse als HTMLFormRenderer die de methoden bevat speciaal voor een HTML form. Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
class FormRenderer
{
    private $builder;

    public function __construct(FormBuilder $builder)
    {

        $this->setBuilder($builder);
    }


    public function setBuilder(FormBuilder $builder)
    {

        $this->builder = $builder;
    }


    public function getBuilder()
    {

        return $this->builder;
    }
}


class HTMLFormRenderer extends FormRenderer
{
    public function render()
    {

        $builder = $this->getBuilder();
        $html = '<form>';

        foreach ($builder->getElements() as $element) {
            $html .= $element->render();
        }


        $html = '</form>';

        return $html;
    }
}

?>


Het is goed mogelijk dat je iets niet begrijpt, zou je dan aub gericht willen uitleggen wat je niet begrijpt dan kunnen we je verder helpen om het wel te begrijpen.
Gewijzigd op 05/11/2012 15:18:40 door Wouter J
 
Bas D L

Bas D L

05/11/2012 15:17:33
Quote Anchor link
Onderstaand snap ik niet :-(
1. public function __construct(FormBuilder $builder) |--> FormBuilder $builder
2. Waar is de class FormRenderer?
 
Wouter J

Wouter J

05/11/2012 15:21:10
Quote Anchor link
Quote:
1. public function __construct(FormBuilder $builder) |--> FormBuilder $builder

Door er FormBuilder voor te zetten eisen we dat de variabele $builder als waarde een instance van de FormBuilder bevat. Wat minder ingewikkeld met voorbeelden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class A
{
}


class B
{
    public function foo(A $object)
    {

        // ...
    }
}


$b = new B();

$b->foo('Hello'); // geeft error, de parameter $object moet een instance van A zijn

$b->foo(new A()); // correct, de parameter $object is nu een instance van A

$a = new A();

$b->foo($a); // correct, de parameter $object is een instance van A (omdat $a een instance van A is)
?>


Quote:
2. Waar is de class FormRenderer?

Dat was een typfout van mij, ik heb het nu aangepast
 
Bas D L

Bas D L

05/11/2012 15:29:11
Quote Anchor link
Dus bij 1. stop je als het ware class a in class b?
Wat ik erg lastig vind is hoe ik dan nu een class FormBuilder moet maken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
class FormBuilder
{
    public function __construct( $FieldType , $FieldName , $FieldValue , $FieldChecked ){
        $this->_FieldType = $FieldType;
        $this->_FieldName = $FieldName;
        $this->_FieldValue = $FieldValue;
        $this->_FieldChecked = $FieldChecked;
    }    
    
    public function getElements(){
        return '<input type="' . $this->_FieldType . '" name="' . $this->_FieldName . '" value="' . $this->_FieldValue . '" ' . $this->_FieldChecked . '>'. PHP_EOL;
    }
}
Gewijzigd op 05/11/2012 15:30:43 door Bas D L
 
Wouter J

Wouter J

05/11/2012 15:34:27
Quote Anchor link
Ja, je stopt class A in B en vanuit daar kun je hem gewoon gebruiken. FormBuilder ziet er niet zo uit. Want je stopt nu weer 2 verantwoordelijkheden in elkaar. Welke 3 hadden we nou net?
1) Builder
2) Elements
3) Renderer

De Elements zijn een veld, die bezitten dus al die eigenschappen. In de FormBuilder klasse hou je nu een array bij met alle elementen erin en die geef je terug met getElements().
 
Bas D L

Bas D L

05/11/2012 15:38:36
Quote Anchor link
En hoe doe ik dat laatste?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
array('type','name','value','checked');
 
Wouter J

Wouter J

05/11/2012 15:47:31
Quote Anchor link
Gewoon zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
class FormBuilder
{
    private $elements = array();

    // ...

    public function addElement(FormElement $element)
    {

        $this->elements[] = $element;
    }


    public function getElements()
    {

        return $this->elements;
    }
}
 
Bas D L

Bas D L

05/11/2012 15:50:39
Quote Anchor link
@wouter, is het zo hoe het moet?

$formBuilder->addName('test 1');
$formBuilder->addTypes('text');

$formBuilder->addName('test 2');
$formBuilder->addTypes('text');

Hoe kan ik trouwens simpeler maken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
class FormBuilder
{
    private $name = array();
    private $types = array();

    public function addName($element)
    {

        $this->name[] = $element;
    }


    public function getName()
    {

        return $this->name;
    }


    public function addTypes($type)
    {

        $this->types[] = $type;
    }


    public function getTypes()
    {

        return $this->types;
    }
}


class FormRenderer extends FormBuilder
{
    private $builder;

    public function __construct($builder)
    {

        $this->setBuilder($builder);
    }

 
    public function setBuilder($builder)
    {

        $this->builder = $builder;
    }


    public function getBuilder()
    {

        return $this->builder;
    }
}


class HTMLFormFactory extends FormRenderer
{
    public function render()
    {

        $builder = $this->getBuilder();
        $html .= '<form>';
        
        print_r($builder->getName());
        $html .= '<input ';
        foreach ($builder->getName() as $name) {
            $html .= 'name="'.$name.'" ';            
            foreach ($builder->getTypes() as $types) {
                $html .= 'type="'.$types.'">';
            }
       }


        $html .= '</form>';

        return $html;
    }
}


$formBuilder = new FormBuilder();

$formBuilder->addName('test 1');
$formBuilder->addTypes('text');

$formBuilder->addName('test 2');
$formBuilder->addTypes('text');

$formFactory = new HTMLFormFactory($formBuilder);

echo $formFactory->render();
?>
Gewijzigd op 05/11/2012 18:58:08 door Bas D L
 
Bo Ter Ham

Bo Ter Ham

05/11/2012 19:48:42
Quote Anchor link
Is het niet handig om ook nog validatie in het oog te houden?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$form
= new Form();
$input = new Form_Element_Input('eenveldnaam');
$input->setRequired(true)
      ->
setMinLength(5);
$form->addElements(array($input));
?>
 
Bas D L

Bas D L

05/11/2012 19:52:49
Quote Anchor link
@Bo, helemaal eens.
Weet jij hoe ik deze code kan verkleinen? Zie bovenstaande classes

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$formBuilder
->addName('test 1');
$formBuilder->addTypes('text');

$formBuilder->addName('test 2');
$formBuilder->addTypes('text');
?>
Gewijzigd op 05/11/2012 19:53:15 door Bas D L
 
Wouter J

Wouter J

05/11/2012 19:58:20
Quote Anchor link
Bas, na mijn mening doe je nu toch totaal iets anders als waar we toenet mee geëindigd zijn? De FormBuilder heeft toch geen name en type als eigenschappen? Zijn dat niet de eigenschappen een FormElement?

Bo, dat hoort niet gedaan te worden door een Form klasse en ook niet door een FormElement klasse. Daar heb je speciale Validator klassen voor nodig.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

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.