simple OOP formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

Applicatieontwikkelaar Java EE

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving De afdeling IV –

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

Medior Mobile Developer iOS Amsterdam

Functie What will you be doing as Mobile Developer? As an iOS app developer you will work in a multidisciplinary team of app developers, web developers and designers. You will work on world-class apps that will be used by thousands of people. There is a lot of room for self-development on a technical and personal level. Together with the rest of the team you develop in the newest techniques and you go for the best quality. We work with Kotlin Multiplatform Mobile to develop hybrid apps and we guarantee quality with peer reviews, unit testing and we use a CI/CD.

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

Front end developer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers met passie voor hun vak. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van ontwerp en ontwikkeling zullen samenkomen in een proof of concept. Nadat is vastgesteld dat de oplossing voldoet aan de belangrijkste behoeftes worden producten of services gevalideerd door middel van korte iteraties. Hiermee zorgen ze ervoor dat het werk voldoet aan de technische vereisten en gebruikersbehoefte. Door het inzetten van de nieuwste technologieën die toekomstbestendig zijn weten ze klanten omver te blazen. Ook geven en organiseren ze veel

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net 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. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Capelle ad Ijssel Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Een deel van jouw werkzaamheden: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps en Power BI.

Bekijk vacature »

Front-end developer Supply Chain Angular, ReactJS,

Functie Het development team bestaat momenteel uit 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creëren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld meedenken over strategie en design. Hierin krijg je veel vrijheid om de functie naar eigen inzicht in te vullen en te pionieren. Alle data die wordt gebruikt is zichtbaar in een webapplicatie, geschreven in Angular en React. Momenteel zijn ze bezig om de dashboards anders vorm te geven en de

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Database Developer

Functieomschrijving Wat ga je doen? Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te voeren, maar het is ook prettig als je in de omgeving van Tilburg woont om naar het kantoor te kunnen komen. Vind jij het leuk om jouw creatieve vaardigheden te benutten om complexe systemen te ontwikkelen? Lees dan snel verder! Bedrijfsprofiel Voor wie

Bekijk vacature »

Technisch Applicatie ontwikkelaar

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! In deze functie werk jij voornamelijk aan: Het onderhouden en ontwikkelen van de IT systemen; Het opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werk je aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkel en implementeren je MS PowerApps en Power BI. Bedrijfsprofiel Je komt terecht bij een familiair

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in ons development team met twee andere .NET developers. Als team werken jullie in scrum en is er iedere ochtend om 11.00 een standup. Jij krijgt als junior .NET ontwikkelaar een inwerk traject dat echt specifiek wordt ingericht op basis van wat jij nodig hebt. Een van de grootste pluspunten bij ons is dat wij binnen ons bedrijf veel (technische) vrijheid geven en juist eigen initiatieven erg stimuleren. Jouw werkzaamheden gaan er bij ons als volgt uit zien: – Het ontwikkelen van nieuwe software samen met interne en eventueel externe ontwikkelaars; – Het

Bekijk vacature »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

C# .NET Developer

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Bennekom gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

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

19/04/2024 14:46:48
 
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.