[oop] wanneer statisch?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Back end developer PHP

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 25 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Junior .NET Software Developer

Dit ga je doen Software development met behulp van C# .NET en / of PHP, je mag zelf kiezen waar jij je in wil specialiseren Meedenken over het nieuwe pakket, waar moet het aan voldoen? Unit-, integratie- en diverse andere tests schrijven en uitvoeren Nauw samenwerken met je IT collega's zoals Testers, Developers, DevOps Specialisten en Architecten Jezelf ontwikkelen met behulp van trainingen en cursussen Hier ga je werken Onze klant, een grote speler in de medische sector, is op zoek naar een enthousiaste junior (of meer ervaren) Software Developer die klaar is voor een nieuwe stap in zijn of

Bekijk vacature »

C#.NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie; Het oplossen van bugs en incidenten. Hier ga je werken Als C#.NET Developer binnen deze organisatie kan jij het verschil maken. Zij werken momenteel nog met programmatuur die is ontwikkeld in C++. Hiervan gaan zij afscheid nemen zodra alle nieuwe software in C#.NET geschreven is. Een grootschalig en langdurig project. Voor hen is deze software van

Bekijk vacature »

Senior Java developer

Dit ga je doen Jouw taken als Senior Java Developer zijn: Het maken van strategische keuzes omtrent de nieuwbouw van applicaties; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java FX, JDBC, SQL, REST, Jax-RS, JSON, Maven, JUnit en Spring (boot)); Reviewen van code en feedback geven op collega developers; Analyseren en oplossen van bugs/incidenten door het onderlinge verband te kunnen leggen van verschillende losstaande systemen. Hier ga je werken Het bedrijf waar je als Senior Java Developer komt te werken staat internationaal bekend om het testen van bodemstructuren door middel van echotechnieken en beeldherkenning.

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

Junior Java Developer

Dit ga je doen Je ontwikkelt innovatieve, maatschappelijk belangrijke applicaties; Je implementeert nieuwe features; Je gaat in gesprek met eindgebruikers en designers om de applicaties continu te finetunen; Je draait mee in een professionele Agile/Scrum omgeving. Hier ga je werken Onze klant is een internationale organisatie gevestigd in de omgeving van Amsterdam. Ze staan zeer goed bekend in de markt door hun innovatieve dienstverlening op IT gebied en hun gepassioneerde werknemers. Voor hun inspanningen op het gebied van IT hebben ze meerdere prijzen gewonnen! Onze klant is onderdeel van een Corporate werkgever en heeft zelf 300 mensen in dienst. Om

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer start jij in een development team met twee ervaren software ontwikkelaars. Jouw persoonlijke ontwikkeling is voor ons erg belangrijk en jij gaat dan ook meelopen met onze Senior .NET ontwikkelaar die jou met zijn kennis en ervaring een goede begeleiding kan aanbieden. Als team zijn jullie verantwoordelijk voor het schrijven van software voor onze toonaangevende Automatiseringssystemen. Jij gaat aan de slag met de onderhoud van de kernsoftware, ondersteund de software van derden door het gebruik van onze webservices en als team zijn jullie verantwoordelijk voor het ontwikkelen van onze backend oplossingen. Wij maken op dit

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 »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

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 »

Software Developer Java

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

Bekijk vacature »

Software Programmeur PHP

Functie Ben jij op zoek naar een nieuwe uitdaging als PHP developer en zoek je een leuke platte organisatie? Lees dan snel verder! Voor een opdrachtgever in omgeving Capelle aan den IJssel dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

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

06/05/2024 16:48:14
 
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.