[oop] wanneer statisch?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end Developer (HTML/CSS, Angular/React/Vue,

Functie Je zal aan de slag gaan in een klein, hecht team met front-end development experts die de ambitie delen mooi werk te leveren. Samen met hen zal je werken aan het gebruiksvriendelijk en interactief maken van complexe webapplicaties, websites en mobile apps. Je levert klanten wat ze nodig hebben terwijl je actief aan jezelf blijft werken met de ondersteuning vanuit je werkplek. Talen als Javascript programmeer jij vloeiend en je hebt kennis van frameworks als React en Angular. Je zou je het liefst nog veel meer ontwikkelen in verschillende front-end talen. Deze kennis deel je graag met je collega’s,

Bekijk vacature »

Senior Front-end developer

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

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 »

Dynamische Oracle/APEX Ontwikkelaar in de logistie

Bedrijfsomschrijving De organisatie in de regio Rotterdam is gespecialiseerd in het ontwikkelen van moderne webbased software voor de ERP branche. In totaal is er 20FTE aan specialisten actief binnen de organisatie. De ICT afdeling bestaat momenteel uit 15FTE. Ze groeien ontzettend hard en daarom zoeken zij een Oracle/APEX Developer die het reeds sterke team nog sterker komt maken. Hier werken ze op projectbasis voor verschillende grote organisaties in de logistieke sector. Het is een informele organisatie waarbinnen een fijne werksfeer heerst. Zoals aangegeven willen ze het team nog sterker maken en daarvoor zoeken ze bij voorkeur medior of senior Oracle/APEX

Bekijk vacature »

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

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 »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

Node.js developer looking for a challenging consul

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

Java developer

Functie Je gaat aan de slag als Tester voor een aantal mooie projecten. Je komt terecht in een DevOps team waar jij aan de slag gaat om de kwaliteit te waarborgen omtrent de maatwerk software voor de klanten. Je draait je hand er niet voor om de adviserende rol te bekleden op het gebied van testautomatisering en het opzetten van testframeworks. Zoals aangegeven ga je daadwerkelijk in het eigen team aan de slag en is het daarnaast ook gebruikelijk bij de klanten op locatie te komen om te werken aan de opdrachten. Je krijgt zodoende echt een mooie kijk in

Bekijk vacature »

Ervaren PHP Developer

Functie omschrijving Jelling IT zoekt ervaren PHP developer! Voor een organisatie in de regio Rhenen zijn wij op zoek naar een ervaren PHP developer die gaat functioneren als een verlengstuk van de klant. Jij bent iemand die technisch complexe zaken met enthousiasme aanvliegt. Je bent in staat om aan meerdere projecten te werken en werkt graag met de nieuwste technieken. In deze functie werk je veel samen met front-end developers en stel je alles in het werk om grote verschillen voor de klanten teweeg te brengen. Verder ben jij iemand die graag zichzelf uitdaagt en die altijd de beste wilt

Bekijk vacature »

IT Manager team PaaS

TenneT is hard groeiende om haar ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Lead PaaS die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je wordt de Teammanager (Lead) van een nieuw team binnen de afdeling Basic van Information Technology and Facilities (ITF) van TenneT. Het team heet Platform as a Service. Hier wordt elke dag in een goede sfeer met zijn allen hard gewerkt om vanuit IT

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

SQL ontwikkelaar

Functieomschrijving Voor een gave werkgever in regio Breda zijn wij per direct op zoek naar een SQL ontwikkelaar/ functioneel consultant. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Je test de ontwikkelde oplossingen om er zeker van te zijn dat deze voldoen aan de functionele specificaties en de behoeften van de organisatie; Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Je stelt op

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

Bekijk vacature »
Ozzie PHP

Ozzie PHP

01/05/2013 22:17:41
Quote Anchor link
Hallo mensen,

Ik heb een (functie)class gemaakt waarmee je een complete directory verwijdert. De werking is ongeveer zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$delete_directory
= new DirectoryDeleter('/pad/naar/de/directory/', 301); // 301 is de http status
$delete_directory->deleteDirectory();

?>

Nu zat ik me ineens te bedenken dat ik hier (en waarschijnlijk in vele vergelijkbare situaties) ook een statische class van zou kunnen maken die als volgt werkt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

DirectoryDeleter::deleteDirectory('/pad/naar/de/directory/', 301);

?>

Nu vroeg ik me dus af wat eigenlijk het verschil is, en wat de beste optie is?

Iemand die mijn vraag kan beantwoorden?
 
PHP hulp

PHP hulp

27/05/2026 09:44:54
 
Wouter J

Wouter J

01/05/2013 23:16:50
Quote Anchor link
Statics gebruik ik nooit met 1 uitzondering: factory methods
 
Reshad F

Reshad F

01/05/2013 23:19:15
Quote Anchor link
Hmm statische klassen worden naar mijn wetens gebruikt wanneer een methode bijvoorbeeld 1x mag of kan voorkomen in het hele gebeuren.

vb.

je hebt een class execute die er voor zorgt dat je applicatie geëxecute wordt dus je maakt iets aan van

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

public function execute() {
  new
ozziesApplication();
}


?>


dan zou je dit het beste static kunnen maken. Waarom? nou heel simpel omdat je niet 2 methodes wilt hebben die je applicatie opstarten, of runnen.
dus dan zou je moeten hebben

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

public static function execute() {
  new
ozziesApplication();
}



?>


Ik weet niet of ik je vraag goed heb begrepen zo en zo ook eventueel goed heb uitgelegd maar dat zie ik dan wel weer :)
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:19:23
Quote Anchor link
Ah oké... een factory kan toch zijn om bijv een formulier met inputvelden te maken?

Maar in het algemeen kunnen we stellen dat we eigenlijk nooit static classes gebruiken dus?

Toevoeging op 01/05/2013 23:21:13:

@Reshad... volgens mij is het daar niet voor bedoeld... (en ik kan nog steeds meerdere applicaties opstarten in jouw voorbeeld als ik de functie meerdere malen aanroep)
 
Wouter J

Wouter J

01/05/2013 23:31:01
Quote Anchor link
Quote:
een factory kan toch zijn om bijv een formulier met inputvelden te maken?

Nee, een factory is een method die een klasse aanmaakt.

Quote:
Maar in het algemeen kunnen we stellen dat we eigenlijk nooit static classes gebruiken dus?

Ligt aan je smaak. Ik doe het nooit en symfony doet het nooit. Maar laravel bijv. gebruikt bijna niks anders.
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:33:25
Quote Anchor link
Oké... maar kun jij mij het verschil uitleggen tussen statisch en niet-statisch?

Is statisch minder "object gericht" omdat je eigenlijk geen nieuwe classes aanmaakt?
Gewijzigd op 01/05/2013 23:33:37 door Ozzie PHP
 
Reshad F

Reshad F

01/05/2013 23:34:47
Quote Anchor link
hmm niet helemaal correct.

Stel je roept die static methode eenmaal aan. dan heb je dus

een nieuwe ozziesApplication(); aangemaakt. vervolgens runt je applicatie en je komt weer dezelfde methode tegen ergens op regeltje 301324 en dan doe je

new reshadApplication(); dan krijg je een dikke error aan je broek omdat je een static methode niet kunt overriden. vandaar ook dat het static is.
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:37:06
Quote Anchor link
Ik snap je niet helemaal. Als je dezelfde code op regeltje 301324 tegenkomt dan is de inhoud van de method toch nog gewoon hetzelfde, namelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

public static function execute() {
  new
ozziesApplication();
}



?>

En dus zal er weer een nieuwe ozziesApplication worden aangemaakt
Gewijzigd op 01/05/2013 23:37:29 door Ozzie PHP
 
Tim S

Tim S

01/05/2013 23:42:21
Quote Anchor link
Wouter J op 01/05/2013 23:31:01:
Maar laravel bijv. gebruikt bijna niks anders.


Laravel gebruikt eigenlijk helemaal geen statics.
De classes die je statisch aanroept zijn aliasen voor het voor het instantieren van een nieuwe class.
Moet je maar eens zoeken op Laravel facades.
Gewijzigd op 01/05/2013 23:50:49 door Tim S
 
Wouter J

Wouter J

01/05/2013 23:49:00
Quote Anchor link
Reshad, volgens mij heb je het nog niet helemaal begrepen...

0zzie, volgens mij heb ik je dat al vaker uitgelegd, maar even 2 redenen:
- Statics zijn niet te testen
- een static class is leuk voor het groeperen van functies, maar je kan nou niet echt spreken van objecten...

Tim, het zijn wel statics alleen ze hebben een naampje gekregen (die ik overigens voor de simpelheid maar even weg had gelaten)
Gewijzigd op 01/05/2013 23:50:35 door Wouter J
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:51:42
Quote Anchor link
Allright, er komt weer iets bovendrijven... thanks Wouter!
 
Tim S

Tim S

01/05/2013 23:55:50
Quote Anchor link
Wouter J op 01/05/2013 23:49:00:
Tim, het zijn wel statics alleen ze hebben een naampje gekregen (die ik overigens voor de simpelheid maar even weg had gelaten)


0 statics
 
Wouter J

Wouter J

01/05/2013 23:59:53
Quote Anchor link
Leuk he, een link geven die niet over het onderwerp (facades) gaat? Nee, ik zou heel graag het verschil tussen facades en statcs leren...
 
Tim S

Tim S

02/05/2013 00:09:59
Quote Anchor link
Wouter J op 01/05/2013 23:59:53:
Leuk he, een link geven die niet over het onderwerp (facades) gaat? Nee, ik zou heel graag het verschil tussen facades en statcs leren...

Dan stel ik voor om zoals ik eerder al zei "maar eens te zoeken op Laravel Facades". I.p.v. meteen te zeggen dat het niet zo is, en dat ze alleen maar een naampje gekregen te hebben. :S
In dit artikel worden facades uitgelegd.
 
Wouter J

Wouter J

02/05/2013 00:23:02
Quote Anchor link
Ik weet wel wat facades zijn, maar het zijn en blijven bewoon static methods. Iemand heeft ooit bedacht dat je dit soort dingen met static methods kan doen en die heeft toen het facade design pattern bedacht, sindsdien zijn het static methods met een naampje, namelijk facade.
 
Kris Peeters

Kris Peeters

02/05/2013 11:03:41
Quote Anchor link
Mijn gedacht... Ik wil me strikt beperken tot statische methodes; niets anders. Ik negeer alles wat hier boven al gezegd is, kwestie van mijn verhaaltje te kunnen vertellen.

Elke methode die geen $this nodig heeft, kan je statisch maken.
Een voorbeeld: een methode die controleert of user input niet leeg is, of informatie bevat in een juiste dataType ... en true of false teruggeeft. Dit is dus puur verwerken. Niets opslaan, niets nodig van eigenschappen...

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
<?php
/**
* (BOOL) validData: ...
*/

static function validData($string, $dataType="string") {
  if (strlen($string) > 0) ...
  switch ($dataType) {
    case
'int':
      if (is_int($string)) ...
      break;
    ...
  }

  return true;
}

?>


Wanneer je zo'n soort functie hebt, heb je er alle belang bij om die methode statisch te maken.
Je sleurt namelijk het object niet mee in de methode. De scope in die methode blijft ook heel klein.
Gewijzigd op 02/05/2013 11:08:23 door Kris Peeters
 
Ozzie PHP

Ozzie PHP

02/05/2013 11:13:55
Quote Anchor link
Kris, dankjewel voor je reactie. Wat bedoel je met "Je sleurt namelijk het object niet mee in de methode."?

Het is alleen een beetje lastig... in mijn voorbeeld in mijn allereerste bericht heb ik het over een directory deleter. Hierbij gebruik ik wel $this, want in de constructor geef ik de directory mee en de constructor set deze in een property.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

private $directory;

public function __construct($directory) {
  $this->directory = $directory;
}


?>

Nu kan ik ook een statische methode gebruiken en de directory meegeven aan die statische methode. En dat zal ook prima werken. De vraag is nu alleen wat je het beste kunt gebruiken en waarom?
 
Kris Peeters

Kris Peeters

02/05/2013 11:34:43
Quote Anchor link
Ik heb het over scope.
Een functie kan best zo weinig mogelijk nutteloze informatie mee sleuren in zijn geheugen.


Dus, ik denk in de eerste plaats aan een class met meerdere methodes. Naast de getters en setters kunnen er methodes zijn die data verwerken en iets terug geven.
Binnen zo'n context is het interessant om die methodes statisch te maken.

Zoals je zelf suggereert in je laatste vraag: ja, inderdaad; ik zou soms aanraden om de data mee te geven met de parameter van de functie, en niet met $this.

Zoals je de vraag nu stelt, weet ik niet of het interessant is voor jouw voorbeeld; of je er netto iets aan over houdt. Want het betekent misschien dat je extra methodes gaat maken en zo.

't Is een kwestie van smaak, lijkt me.
Een bijkomend ding: statische methodes doen je nadenken over wat een functie echt is, wat het doet en waarom je dat gebruikt.
Namelijk: je krijgt iets binnen, je geeft een return terug naar wie er om vroeg.
 



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.