OOP Forms

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C++ Ontwikkelaar

Functieomschrijving Ben jij als software ontwikkelaar toe aan een nieuwe uitdaging? Dan zoeken wij jou! Voor het maken van de procesbesturingssoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Ontwerpen, programmeren en testen van product aanpassingen; Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden, o.a. door middel van SCRUM; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Implementeren van nieuwe product

Bekijk vacature »

Junior PHP Developer

Functieomschrijving Junior PHP Developer gezocht! Voor een opdrachtgever in de regio Gelderland zijn wij op zoek naar een Junior PHP Developer die onderdeel gaat worden van het ontwikkelingsteam van deze organisatie. In deze functie ga jij aan de slag met het schrijven van software voor de aansturing van en het managen van windparken en bijbehorende onderdelen. Hiernaast ga jij je bezighouden met het ontwikkelen, testen en onderhouden van diverse webapplicaties. Het team waarin je komt te werken bestaat uit 3 developers, hierdoor krijg je veel verantwoordelijkheid en de kans om jezelf verder te ontwikkelen. Er wordt echter wel van je

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer .NET, C# voor een gaaf bedrijf in de omgeving van Utrecht! 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? Lees dan snel verder! Voor een opdrachtgever in de omgeving van Utrecht, zijn wij op zoek naar een Junior Software Developer. Werk jij graag aan verschillende projecten en ga je graag klanten op bezoek? Dan is dit de ideale functie voor jou! Binnen deze functie

Bekijk vacature »

Java Developer (Training And Simulation)

Wat jij doet Je zou onze Java Developer zijn en nauw samenwerken met je Product Owner, Software System Engineer, Scrum Master en andere Developers. Samen draag je bij aan een multidisciplinair en zelf organiserend Agile team. De rol is zeer afwisselend en bestaat uit, maar is zeker niet beperkt tot: de-risk en prototype onbewezen simulatietechnologieën; simulatiekaders ontwikkelen voor gebruik door andere teams; je bent goed in het begrijpen van ingewikkelde ideeën; heeft de mogelijkheid om nauw samen te werken met grote internationale klanten, leveranciers en overheden om onze oplossingen, vastleggingsvereisten, enz. te definiëren en te presenteren. Ben jij het? Wij

Bekijk vacature »

Medior Java developer

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 »

T-SQL Database developer

Functie omschrijving Ben jij een ETL database specialist? Houd jij ervan om te puzzelen met Databases, Query's & Stored procedures? Zoek jij uitdaging, vrijheid en verantwoordelijkheid? Zoek dan niet verder! Wij zijn per direct op zoek naar medior en senior database developers. Je gaat werken voor een relatief klein softwarebedrijf in omgeving Tilburg. Samen met 12 collega's (allemaal techneuten), ga jij je bezig houden met het bouwen en/of onderhouden van database software. Deze software wordt internationaal ingezet voor het automatiseren van logistieke processen. Jouw werkzaamheden gaan er als volgt uit zien: Je bent in een klein team met developers, verantwoordelijk

Bekijk vacature »

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 »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

Front-end developer (HTML, CSS, SASS, JavaScript)

Functie Momenteel zijn we voor ons Digital team op zoek naar een (medior) Front-end developer. Samen met je collega’s werk je in een Agile/Scrum omgeving aan de ontwikkeling van onze webapplicaties, websites en andere oplossingen. Je draagt bij aan een sterk ontwikkelproces waarin kwaliteit voorop staat. Hiervoor ben je niet alleen bezig met eigen code maar ook code reviews van andere collega’s. Ben jij graag op de hoogte van de nieuwste ontwikkelingen in je vakgebied en wil je deze toepassen voor diverse projecten? Dan komen wij graag met je in contact! Eisen • HBO werk- en denkniveau • Minimaal 2

Bekijk vacature »

Senior PHP developer

Functie Jouw werkzaamheden zullen grotendeels bestaan uit het in teamverband ontwerpen, vernieuwen en door ontwikkelen van het systeem. Het is echt back-end werk (bijvoorbeeld het doorontwikkelen van een API) en dit moet je dan ook liggen. Ze zijn niet persee gebonden aan talen of tools maar gebruiken graag de technieken die het beste aansluiten op de gegeven oplossing. Voor nieuwe (versies van) componenten maken ze veelal gebruik van Go(lang). Bij aanpassingen aan bestaande onderdelen gebeurt dit in PHP en C++. Het team is heel divers, er hangt een relaxte sfeer en ze organiseren regelmatig leuke music nights, game nights e.d.

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

IT Infrastructuur Developer

IT Infrastructuur Developer Ben jij (bijna) klaar met je HBO studie in de richting van IT? Opzoek naar een spannende eerste baan, waar je ontzettend veel kan leren? Dan hebben wij de ultieme job voor jou! Voor een goede klant van ons in de financiële dienstverlening zijn wij opzoek naar een Junior Infrastructure Developer. Deze baan is een mooie kans om een sterke start te geven aan jouw carrière binnen de IT! De job Je werkt nauw samen met het Devops team, en zal je voornamelijk bezighouden met het automatiseren van infrastructure componenten. De componenten worden opgevraagd door het DevOps

Bekijk vacature »

(Lead) PHP Software Developer

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een PHP software developer met een aantal jaar werkervaring. Je krijgt een plek in een klein team met 2 andere software developers. Wil jij graag werken met de nieuwste technieken bij een bedrijf waar jij de lead gaat nemen in de verder ontwikkeling en modernisering van een eigen software pakket? Dan ben je hier aan het juiste adres! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "in-house" ontwikkelde multimedia platform. Je neemt de lead in

Bekijk vacature »

Junior Java Developer

Dit ga je doen Full stack web- en appdevelopment; Vertalen van de functionele wensen naar de technische specificaties; Sturing geven aan/klank board zijn voor de software teams; Trainen van de software teams; Sparren met klanten; Meedenken over architectuur. Hier ga je werken De organisatie is een bureau welke websites en mobiele applicaties bouwt voor verschillende toonaangevende organisaties. Hierbij richten zij zich voornamelijk op de sectoren leisure, overheid en zorg. De sfeer intern kenmerkt zich door informaliteit, gezelligheid en ambitie. Ze werken dag in dag uit samen om mooie producten op te leveren voor hun klanten. Op dit moment zijn er

Bekijk vacature »
- Raoul -

- Raoul -

02/07/2012 14:59:34
Quote Anchor link
Hallo allemaal,

Ik heb net een klein OOP classje gemaakt die een form op het beeld tevoorschijn geeft.

Ik ben totaal niet tevreden met het renderen van forms.
Ik heb tot nu toe 1 element gemaakt en dat is de 'text' element.

Hebben jullie wat tips om het renderen beter laten te verlopen?

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 Form
{
    private $_fields = array();
    private $_attribs = array();
    
    
    //todo
    public function setAttrib($attribName, $attribValue) { $this->_attribs[$attribName] = $attribValue; }
    public function getAttrib($attribName) { return $this->_attribs[$attribName]; }
    
    public function addField($field)
    {

        $this->_fields[] = $field;
    }

    
    public function render()
    {

        $returnValue = '<form';
        
        if (isset($this->_attribs['method']))
        {

            $returnValue .= ' method="' . $this->_attribs['method'] . '"';
        }

        else
        {
            $returnValue .= ' method="post"';
        }

        
        if (isset($this->_attribs['action']))
        {

            $returnValue .= ' action="' . $this->_attribs['action'] . '"';
        }

        
        $returnValue .= '>';
        
        foreach ($this->_fields as $field)
        {

            $returnValue .= $field->render();
        }

        
        $returnValue .= '</form>';
        
        return $returnValue;
    }

}

?>


Form_Element:
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
<?php
class Form_Element
{
    public $_properties = array();
    public $_label = '';
    public $_name = '';
    public $_value = '';
    
    public function __construct($fieldName)
    {

        $this->_name = $fieldName;
    }

    
    public function setProperty($property, $value)
    {

        $this->_properties[$property] = $value;
    }

    
    public function setValue($value)
    {

        $this->_value = $value;
    }

    
    public function setLabel($label)
    {

        $this->_label = $label;
    }
}

?>


Form_Element_TextField:
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
<?php
class Form_Element_TextField extends Form_Element
{
    public function render()
    {

        $returnValue = '';
        
        if (isset($this->_label))
        {

            $returnValue .= '<label>' . $this->_label . '</label>';
        }


        $returnValue .= '<input type="text"';
        
        $returnValue .= ' name="' . $this->_name . '"';
        
        foreach ($this->_properties as $prop => $value)
        {

            $returnValue .= ' ' . $prop . '="' . $value . '"';
        }

        
        $returnValue .= ' />';

        return $returnValue;
    }
}

?>
 
PHP hulp

PHP hulp

05/01/2025 09:31:07
 
Wouter J

Wouter J

02/07/2012 15:20:17
Quote Anchor link
Eerst wat tips:
- geen public properties maken, zorg dat je controle hebt over wat er in staat
- de prefix _ voor een propertienaam gebruiken sommige mensen omdat ze dan aangeven dat het niet public is. Ik zelf vind dat een beetje onzin, maar waarom gebruik je hem ook voor public properties?
- gebruik volledige namen of erkende afkortingen, dus of setAttribute of setAttr, maar ga liever geen zelf verzonnen afkortingen gebruiken.
- typ alles op dezelfde manier, dus niet zomaar 2 methods die op 1 regel staan.

Dan inhoudelijk:
- Elk Form Element moet een render method hebben, deze moet je dus verplicht stellen. Maak daarom Form_Element abstract en geef hem een abstracte render method
- Ik weet niet wat je hier fout aan vind, dit is hoe het hoort en hoe ik het ook gebruik (zie bijv. mijn OOPbuilder project waar ong. hetzelfde gebeurd).
 
Erwin H

Erwin H

02/07/2012 15:34:18
Quote Anchor link
Ik zou de render method niet in een abstracte superclass bouwen, maar verplicht stellen via een interface. Als je elk form element (of beter, elk HTML element) hetzelfde interface laat implementeren kan je elk element naar gelang je het nodig hebt invoegen.

Een eventuele abstracte superclass zou ik wel gebruiken om de standard attributen van een form element al in te bouwen. Een text, submit, checkbox, radiobutton etc zijn allemaal van het type 'input' en hebben (of kunnen) allemaal een class, id, name, value, type. Die kan je dus al in de superclass inbouwen zodat je niet voor alle elementen hetzelfde hoeft te doen.
 
Wouter J

Wouter J

02/07/2012 15:36:40
Quote Anchor link
Erwin, het lijkt me niet nodig om nog een extra interface bovenop onze momenteel al superklasse Form_Element te bouwen. Als je die nou abstract maakt met een abstracte method en elk element extend die Form_Element dan heb je volgens mij al het juiste effect?
 
- Raoul -

- Raoul -

02/07/2012 15:46:45
Quote Anchor link
Wouter bedankt voor je tips, deze ga ik er zeker in verwerken
Wat ik er fout aan vind is het hergebruiken van andere elementen.
Zo moet ik dan iedere keer die
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
foreach ($this->_properties as $prop => $value)

Doen bij ieder nieuw element, dat is toch niet mooi?
 
Erwin H

Erwin H

02/07/2012 15:47:35
Quote Anchor link
Ik zou groter denken. Een interface die je aan elke class kan geven die een html element kan bouwen, of misschien wel het hele form, of misschien wel zelfs de hele pagina. Dat maakt het extreem flexibel.

Nu houd je het op forms, maar voor tabellen en andere elementen heb je het ook nodig. Ook die moet je kunnen renderen.

Simpel addChild methode erbij en je kan op een zeer eenvoudige wijze een hele boom opbouwen die je met 1 call kan renderen.

Er is vast een pattern voor, maar ik zo 1-2-3 niet een naam ervoor vinden.

Toevoeging op 02/07/2012 15:53:26:

Als voorbeeldje, dit is de interface die ik gebruik en al mijn view classes die pagina elementen bouwen implementeren die:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
interface View_Element_Interface {
  public function __construct( $tag, array $attributes = array() );
  public function addChild( View_Element_Interface $child );
  public function __toString();
}

?>

Aan het einde heb ik dan 1 $root en die hoef ik alleen maar te echoen en de hele boom wordt opgebouwd. Inclusief forms, tabellen, scripts, head, alles.
 
Wouter J

Wouter J

02/07/2012 16:39:18
Quote Anchor link
Hmm, ja daar dacht ik ook aan toen ik op reageren drukte. Aan dat laatste (addchild) had ik nog niet gedacht, maar klinkt geweldig!
 
Erwin H

Erwin H

02/07/2012 17:07:56
Quote Anchor link
Met dat addChild en de interface, kan je zowel form als element die interface laten implementeren. Je kan dan een form bouwen door elke keer form elementen (labels, input elementen, buttons) eraan toe te voegen middels de addChild. Bij het renderen moet je ervoor zorgen dat elk element ook de render() method van zijn child-elementen op het juiste moment aanroept en het wegschrijven gaat dan feitelijk vanzelf.
 



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.