simple OOP formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full stack Python developer

Functie Samen met andere collega’s (een product owner, een software manager en een ervaren ontwikkelaar) ga jij onze producten verder ontwikkelen. Jouw verantwoordelijkheden zullen bestaan uit: – Verder wil gaan met de ontwikkeling van onze bestaande producten; nieuwe features! – Meedenkt over de roadmap van onze producten – Als sparringpartner kan optreden op het gebied van development – Zelf ook nieuwe ideeën op tafel durft te leggen en deze van scratch af aan wilt bouwen Hieronder ook een paar voorbeelden van projecten waar we momenteel mee bezig zijn of binnenkort aan willen beginnen: – Real-time interactie creëren in onze web

Bekijk vacature »

Back-End Web Developer

As a Back-End Web Developer at Coolblue, you ensure that our webshops work as optimal as possible. How do I become a Back-End Web Developer at Coolblue? As a Back-End Web Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you also feel confident with setting up microservices in Typescript or are open to learning this. Would you also like to become a PHP Developer at Coolblue? Read below if the job suits you. You enjoy doing this Writing pure

Bekijk vacature »

Full Stack Developer/ Applicatie Ontwikkelaar

Wat jij doet Als Applicatie Ontwikkelaar ben je onderdeel van het team die de Rimote omgeving ontwikkeld en onderhoud. Hierbij kan je denk aan de cloud, on premise en webapplicaties welke worden gebruikt in bijvoorbeeld industriële bakkerijen, biogasinstallaties en kwekerijen. Deze applicaties verzorgen (remote) de aansturing en monitoring van processen, machines en robots. Van a tot z ben je betrokken bij projecten. Dit betekent vanaf ontwerp tot oplevering. Je moet samen met jouw team een goed product neer zetten. Dit begint met het opzetten van het ontwerp. De basis van de software moet staan als een huis. Daarvoor moet jij

Bekijk vacature »

Software Developer

Dit ga je doen Ontwerpen, ontwikkelen en onderhouden van (mobiele) internettoepassingen; Ontwikkelen en onderhouden van Microservices; Ontwerpen en optimaliseren van databases; Identificeren van nieuwe trends/ontwikkelingen binnen de branche. Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt zich op het leveren van kwalitatief hoogwaardige producten aan alle hun klanten. De organisatie telt circa 4.000 medewerkers in meer dan 10 verschillende landen. Momenteel is de organisatie op zoek naar een Software Developer wilt meewerken aan het

Bekijk vacature »

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Front-end Developer

Dit ga je doen Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Mede-verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en API ontwerp; Participeren in diverse projecten t.b.v. optimalisatie van diverse applicaties; Het opzetten van API koppelingen met externe applicaties. Hier ga je werken Betreffende organisatie is gevestigd in de regio van Swifterbant en is al ruim 20 jaar lang bedreven in het ontwikkelen en aanbieden van

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Ontwikkelen van herbruikbare componenten; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als junior .NET Developer kom je terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als junior .NET Developer werk je aan het ontwikkelen van verbeterde

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

Ambitieuze Junior/Medior Low-code Developers gezoc

Bedrijfsomschrijving Transformeer bedrijven met jouw expertise in innovatieve technologie Ben je een bedreven softwareontwikkelaar met ervaring in Low-code platformen, of sta je te popelen om je in deze baanbrekende oplossing te verdiepen? Wij zijn op zoek naar jou! Ons klantenbestand groeit en we willen ons team uitbreiden met deskundige en leergierige Low-code specialisten. Is het jouw passie om organisaties te ondersteunen in hun digitale transformatie en maatwerkoplossingen te bieden met behulp van geavanceerde software? Wij zijn een vooruitstrevend bedrijf dat dagelijks werkt aan het oplossen van complexe vraagstukken om de digitale ambities van onze klanten te realiseren. Functieomschrijving Ontwikkel op

Bekijk vacature »

Mendix Developer

For our client in Amsterdam, we are looking for a Senior Mendix Developer. Company description Our client is an IT Consultancy company who’s been active for 10 years now. With their ambitious team, they are working with different clients in order to help them with analyzing their data and giving advice to them, regarding how they can use their data in the smartest ways, or to make sure that their mobile or web applications are working efficiently. As you get a glimpse of various industries, it is guaranteed that no day will be the same. Job description As a Mendix

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 »

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

26/04/2024 15:20:40
 
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.