[oop] wanneer statisch?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Grafisch vormgever

Standplaats: Maasland Aantal uren: 32 – 40 uur per week Opleidingsniveau: HBO werk- en denkniveau Ben jij een ambitieuze grafisch vormgever met een passie voor creativiteit en oog voor detail? Vind jij het daarnaast leuk om ook marketingactiviteiten op te pakken? Dan zijn wij op zoek naar jou! Bedrijfsinformatie Westacc Group BV is het zusterbedrijf van HABA en specialiseert zich in (maatwerk) oplossingen voor (elektro) techniek en verlichting in de kampeerbranche. Zij produceren en assembleren onderdelen voor caravans, campers en boten. Voor een groot aantal caravan- en campermerken leveren wij producten als zekeringkasten, invoerdozen, acculaders, schakelmateriaal en verlichting. De producten

Bekijk vacature »

C# .NET Developer

Functieomschrijving Voor dit leuke softwarre bedrijf in de omgeving Vught zijn we per direct op zoek naar een C#/.NET Developer. Is development jouw passie en doe je dit graag met C#/.NET? Lees dan snel verder! Jou werkzaamheden zullen zijn: Zorgen voor de optimalisatie van de huidige software en het automatiseren van bedrijfsprocessen. Naar aanleiding van de wensen van de klant ga je, met je collega's op zoel naar passende oplossingen en je werkt dit uit tot een mooi eindproduct. Je gaat webshops, websites en webapplicaties ontwikkelen door middel van ASP.NET, C# en MVC Framework. Bedrijfsprofiel Deze opdrachtgever houdt zich bezig

Bekijk vacature »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

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 »

Informeel bureau zoekt Senior PHP developer

Functie Als senior PHP developer neem je het voortouw in ontwikkeltrajecten en ben je in staat werk uit te leggen aan collega’s om zo je kennis met hen te delen. Je deinst niet terug voor ingewikkelde projecten. Deze zie jij alleen maar als uit uitdaging. Je werkt doorlopend aan klantcases (en hierdoor je klant echt leert kennen), maar toch ben je afwisselend bezig. Dit alles in een vrije en ontspannen werksfeer, met een team van gelijkgestemde. Binnen de development teams werken ze met o.a. PHP, Laravel, React, Node, Elastic, Amazon AWS, JIRA, Solid, Domain-driven-design, Doctrine, Redis, docker, Kubernetes, CI, PHP

Bekijk vacature »

Frontend Developer Vue Nuxt HBO Javascript

Samengevat: Deze werkgever levert elke dag betere digitale gebruikerservaringen. Ben jij geschikt als frontend Developer? Heb je ervaring met Vue en Nuxt? Vaste baan: Front-End Developer HBO €3.100 - €4.600 Zij bieden opdrachtgevers een complete dienstverlening op gebied van ontwerpen en ontwikkelen van websites, zoekmachine optimalisatie, online adverteren, content marketing en conversie verbetering. Zij werken met een eigen ontwikkeld CMS. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke nieuwe trend. Onze systemen zijn groot

Bekijk vacature »

Junior Software Developer C# Verhuursector Verhuur

Samengevat: Wij ontwikkelen en leveren softwaresystemen voor de logistieke sector en de verhuursector. Ben jij geschikt als Junior Software Developer? Heb je ervaring met Delphi? Vaste baan: C# Software Developer Logistiek HBO €2.500 - €3.900 Deze werkgever is een software ontwikkelaar, gericht op software voor de logistieke sector. Deze werkgever heeft eigen producten ontwikkelen en leveren ook maatwerk. Ons bedrijf kent een boeiende en inspirerende werkomgeving met een open cultuur en mogelijkheden voor je verdere ontwikkeling. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om

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 »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

PHP Developer Symfony

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. Hier ga je werken Als PHP Developer kom 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 teams welke ieder verantwoordelijk zijn voor hun 'eigen' klanten. Jouw team bestaat uit 6 backend

Bekijk vacature »

Software Developer

Dit ga je doen Ontwikkelen aan de software dat beschikbaar is op de substations; Ontwikkelen in C++, C, Python en JavaScript. Daarnaast op een Embedded Linux omgeving, opgebouwd met containers en DevOps; Meewerken aan cyber security (OWASP); Uitvoeren/bouwen van geautomatiseerde testen in samenwerking met de Quality Specialist; Vertalen van wensen van de klanten/business naar werkbare/duurzame oplossingen. Hier ga je werken Als Software Ontwikkelaar kom je te werken bij een organisatie gericht op de (internationale) energiemarkt, waar wordt gewerkt voor het verwerven en verwerken van realtime, high quality data. Er wordt gewerkt vanuit het hart van de substations en direct voor

Bekijk vacature »

Junior full stack developer

Functie Als full stack developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

Fullstack Developer

Functieomschrijving Heb je kort geleden jouw HBO diploma ICT development behaald? Of zit je nog aan het begin van je carrière en heb je affiniteit met C#.NET? Voor een erkende werkgever in de omgeving van Oosterhout zijn wij op zoek naar een fullstack developer. Als C#.NET developer werk je samen met een vooruitstrevend team aan het ontwikkelen van maatwerk software voor klanten. Je hebt affiniteit met SQL, maar nog belangrijker is dat je kennis en ervaring hebt met C#.NET. Jouw werkzaamheden zien er als volgt uit: Het ontwikkelen van onze high-availability en high-performance backend; Je begint de dag rond 8:30

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

Bekijk vacature »

Back end developer Onderwijssoftware

Functie Als back end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van hoogwaardige

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

26/04/2024 12:55:02
 
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.