class constants

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end Developer

Functie omschrijving Gezocht front-end developer! Voor een toffe organisatie in de regio Rhenen zij wij op zoek naar een front-end developer die de eindverantwoordelijkheid op zich neemt van alles wat met design te maken heeft. In deze functie heb je een adviserende rol en beschik je over een grote dosis vakinhoudelijke kennis. Samen met collega’s en klanten overleg je om aangeleverde designs om te zetten naar unieke concepten. Zo draag jij je steentje bij aan de groeiambities van de klant. Voor klanten wordt jij het vaste aanspreekpunt als het gaat over planningen hierin houdt je alle betrokkenen goed op de

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 »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Junior PHP 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 »

PHP Laravel Ontwikkelaar

Functie omschrijving Weet jij alles over Laravel en krijg je energie van het developen van software hiermee? Laat het weten want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch voor klein bedrijf welke softwareoplossingen maakt voor hun klanten. Jouw taken hierbij: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Documentatie schrijven over applicaties. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein bedrijf. Er werken circa 15 medewerkers, verdeeld in meerdere teams, zoals back-end

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Scrum Master

TenneT is hard groeiend om de onze 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 Scrum master op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je begeleidt twee teams binnen de afdeling Platform Services (PLS). Je helpt mee de devops manier van werken van de teams verder door te ontwikkelen. Je helpt de PO bij het managen van de product backlog; het voorbereiden van

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

Bekijk vacature »

Back end developer Digital Agency

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Software Developer

Functie omschrijving In deze functie ga je aan de slag met het door ontwikkelen van de interne software. Zij maken gebruik van een CRM, wat door de hele organisatie gebruikt wordt. Andere taken: Je gaat het CRM-systeem door middel van PHP verder ontwikkelen; Verder bouw je verschillende API's en koppelingen tussen systemen; Ook ga je collega's ondersteunen bij vragen over de software en applicaties; Deelnemen aan overleggen met het development team; Bij interesse is er de mogelijkheid om junioren te gaan begeleiden. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er

Bekijk vacature »

Senior/Lead Python developer

Functie Samen met je team, bestaande uit een senior, 2 mediors en één junior ontwikkelaar ga je op een Agile-gebaseerde aanpak werken aan hun software. Je hebt oog voor kwaliteit, risico’s en klantbelang. Communicatie met je collega’s en waar nodig ook met klanten speelt een belangrijke rol in het bereiken van een succesvol resultaat. Als persoon ben je slim, krijg je dingen voor elkaar en ga je resultaatgericht te werk. Binnen het development team is er veel zelfstandigheid, los van de stand-up (10:00 uur) en zo nu en dan pair-programming sessies. Technieken die zij gebruiken zijn o.a. Python, Django, MySQL,

Bekijk vacature »

Fullstack of back-end PHP developer

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Low-Code Expert/Developer: Power Platform Speciali

Bedrijfsomschrijving Als Low-Code Expert/Developer bij ons innovatieve bedrijf, neem je een cruciale rol op je in de creatie, ondersteuning en implementatie van diverse oplossingen met behulp van het veelzijdige Power Platform. Dit platform omvat Power Apps, Power BI, Power Automate, Power Virtual Agent en Azure Logic Apps. Het Power Platform biedt je de mogelijkheid om klanten te voorzien van naadloze integraties door op maat gemaakte oplossingen te creëren die compatibel zijn met (bijna) alle bestaande software-infrastructuren. Dankzij het uitgebreide scala aan toepassingen, krijg je de kans om als architect en projectleider van je eigen oplossing te fungeren. Dompel jezelf onder

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze klanten. Geen werkdag is hetzelfde, je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Arval en de Politie. Werken bij Sogeti Nieuwe ontwikkelingen volgen we op de voet en delen we binnen de

Bekijk vacature »
Ozzie PHP

Ozzie PHP

14/10/2013 12:13:54
Quote Anchor link
Ola,

Een (hoop ik) simpel vraagje. Waar zijn class constants eigenlijk voor bedoeld? In sommige gevallen is het vrij duidelijk. Stel je hebt een class en die class moet 5 producten tonen, dan zeg je:

const AMOUNT = 5;

Maar, nu vraag ik me af of je in de nu volgende situatie ook class constants behoort te gebruiken. Stel we hebben een class Foo, en class Foo slaat wel eens gegevens op. Deze gegevens worden altijd opgeslagen in directory "/foobar/bar". Is het dan de bedoeling dat je deze directory in een constante opslaat? Zo dus:

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

class Foo {

  const DIRECTORY = '/foobar/bar';

  public function save($data) {
    file_put_contents(self::DIRECTORY, $data);
  }

}


?>

Zouden jullie hier een constante voor gebruiken (zoals in het voorbeeld) of zouden jullie de directory gewoon hardcoded in de method zetten. Dus zo:

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

class Foo {

  public function save($data) {
    file_put_contents('/foobar/bar', $data);
  }

}


?>

Graag jullie reactie.
Gewijzigd op 14/10/2013 12:14:46 door Ozzie PHP
 
PHP hulp

PHP hulp

26/05/2026 14:04:48
 
Dos Moonen

Dos Moonen

14/10/2013 13:35:31
Quote Anchor link
Bij de voorbeelden die je gaf heb je naar mijn idee geen toegevoegde waarde met een constante. Over het algemeen worden class constante gebruikt om als parameter te gebruiken. Of versienummers.

Als je nou 'static::DIRECTORY' zou gebruiken dan kan je in child classes die constante overschrijven en door 'static' te gebruiken in plaats van 'self' zal de ook echt de overloaded constante gebruikt worden.

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
<?php

class Foo {

  const DIRECTORY = '/foobar/bar';

  public function save($data) {
    file_put_contents(static::DIRECTORY, $data);
  }

}


class Miauw extends Foo {

  const DIRECTORY = 'miauwwoef/miauw';

  // hier meer code die dingen toevoegt/iets anders wijzigt dan de opslag locatie.
  // anders verdient het waarschijnlijk geen eige class


}

$foo = new Foo;
$miauw = new Miauw;


// vanaf PHP 5.3.0 en hoger, voor lagere versies zou je een getter aan moeten maken.
// maar sinds jij 5.5 gebruikt zit je goed.
// http://php.net/manual/en/language.oop5.constants.php

var_dump($foo::DIRECTORY, $miauw::DIRECTORY);
?>


Het hangt er vanaf of je nog andere dingen met die constante wilt kunnen doen. Als je ergens anders in je code base een methode hebt die de locatie nodig heeft waar Foo zijn spullen opslaat, dan is een constante gebruiken beter dan twee keer een path te hardcoden.
Mocht meerdere objecten willen hebben met de zelfde functieonaliteit als Foo maar voor verschillende paths dan moet je jezelf even afvragen of het niet beter is om het een configuratie optie te maken i.p.v. het voorbeeld hier boven. Vergeet dan geen getter te maken.
 
Ozzie PHP

Ozzie PHP

14/10/2013 13:43:40
Quote Anchor link
Thanks Dos! Ik gebruik trouwens versie 5.4.

Ik wist dus niet dat je een constante kon overschrijven. Is dat iets nieuws? Wat zegt dat "static" dan eigenlijk?

Kijk, waarom ik dus dacht dathet goed is om in zo'n geval een constante te gebruiken, is omdat je dan alle "variabele" info buiten je code kunt houden. In dit geval is de directory een variabele factor (het had namelijk ook een andere directory kunnen zijn). Mocht je dan een keer de directory willen aanpassen, dan hoef je alleen de constante aan te passen, en hoef je niet daadwerkelijk in de code te gaan spitten.
 
Dos Moonen

Dos Moonen

14/10/2013 14:29:58
Quote Anchor link
self betekend de class waar je in zit tijdens het defineren. Dus als je bij mijn voorbeeld self::DIRECTORY zou gebruiken, dan zou Miauw zijn spullen ook opslaan in foobar/foo i.p.v. miauwwoef/miauw.
self wordt dan namelijk gebruikt in de context van class Foo en dan dus vervangen worden door Foo::DIRECTORY.
static wordt gebruikt in de context van class/object gebruikt tijdens het aanroepen. Tenzij je een class final declareert weet je dus niet van te voren wat de context is.

PS. dan ben ik in de war met iemand anders wat betreft je PHP versie :p
 
Ozzie PHP

Ozzie PHP

14/10/2013 14:36:43
Quote Anchor link
Euh, oké... maar ik gebruik dus altijd self::CONSTANT_NAAM om een constante in een class aan te roepen. Klopt dat dan eigenlijk niet? Of zijn beiden goed?

Maar wat vind je van mijn eerdere redenatie? Om dus door middel van constanten de "variabelen" buiten de code te houden?

Dus in je code (method) geef je aan dat je een directory nodig hebt, maar buiten de code geef je via een constante aan om welke directory het gaat. Op deze manier krijg je dus geen variabele data in je code. Snap je wat ik bedoel te zeggen?
 
Dos Moonen

Dos Moonen

14/10/2013 14:59:16
Quote Anchor link
Met self::iets is het makkelijker om classes te hernoemen zonder een search & replace te hoeven doen.

self houd dus in de methode/variabele/constante van de class waarin je het gebruikt of een van zijn ancestors (via inheritance), in die volgorde.
static houd dus in de methode/variabele/constante van de class die je aanroept, de class waarin je het of een van zijn ancestors (via inheritance), in die volgorde.

Veel voorbeelden zijn te vinden op http://php.net/manual/en/language.oop5.late-static-bindings.php
Tussen de comments zitten ook goede voorbeelden.
Gewijzigd op 14/10/2013 15:01:03 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

14/10/2013 15:07:04
Quote Anchor link
"Met self::iets is het makkelijker om classes te hernoemen zonder een search & replace te hoeven doen."

Oké, maar "static::iets" werkt ook, dus dat maakt dan niet uit toch? Maar als ik in dit geval gewoon self gebruik dan klopt het toch?

Al met al nog geen antwoord op mijn vraag...

"Maar wat vind je van mijn eerdere redenatie? Om dus door middel van constanten de "variabelen" buiten de code te houden?

Dus in je code (method) geef je aan dat je een directory nodig hebt, maar buiten de code geef je via een constante aan om welke directory het gaat. Op deze manier krijg je dus geen variabele data in je code. Snap je wat ik bedoel te zeggen?"
 
NOLot -

NOLot -

14/10/2013 15:22:33
Quote Anchor link
Ozzie PHP op 14/10/2013 15:07:04:
"Maar wat vind je van mijn eerdere redenatie? Om dus door middel van constanten de "variabelen" buiten de code te houden?

Dus in je code (method) geef je aan dat je een directory nodig hebt, maar buiten de code geef je via een constante aan om welke directory het gaat. Op deze manier krijg je dus geen variabele data in je code. Snap je wat ik bedoel te zeggen?"



Persoonlijke voorkeur + hangt van de situatie af. Je voorbeeld is zo slecht dat je er eigenlijk niks zinnigs over kan zeggen, aangezien je bij een class dat een file savet in een directory eigenlijk nooit de directory als constante wilt hebben (maar via een setter)
 
Ozzie PHP

Ozzie PHP

14/10/2013 15:33:04
Quote Anchor link
Omdat in jouw ogen iets niet logisch is, wil het niet gelijk zeggen dat het een slecht voorbeeld is.

In dit geval gaat het om een class die altijd iets moet ophalen in een vaste directory. Die directory is onderdeel van een systeem en hoeft in dit specifieke geval niet geset te worden. Maar het gaat erom of het slim is om dit soort data buiten de code te houden.

Ander voorbeeld dan, speciaal voor jou ;)

Stel je verkoopt producten, en (vraag me niet waarom) je wil tijdelijk iedere productnaam suffixen met een text-string, bijv. '-MadeByNOLot!';

Dan kun je dit hardcoded in je method zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
public function getName() {
  return $this->name . '-MadeByNOLot!';
}

?>

... of je gaat een constante gebruiken:

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

const SUFFIX = '-MadeByNOLot!';

public function getName() {
  return $this->name . self::SUFFIX;
}

?>

Zijn constanten hier voor bedoeld is mijn vraag. Ik vind het een mooie manier om "data" los te koppelen van de code, maar is dit gebruikelijk vraag ik me af.
Gewijzigd op 14/10/2013 15:34:31 door Ozzie PHP
 
Dos Moonen

Dos Moonen

14/10/2013 15:44:56
Quote Anchor link
Gebruik 'static' wanneer children het mogen overloaden, daar komt het op neer. Elke 'self' kan je zoals ik al zei in principe vervangen door de class naam van de class waarin de 'self' voorkomt. Voor 'static' is dit niet het geval. Als je dat zou doen kan het zijn dat kan het zijn dat dingen niet meer werken zoals ze horen te werken. Wanneer je 'self' zou vervangen door de class naam zal zoiets voor zover ik weet nooit voorkomen.

Ik kan dus niet met zekerheid zeggen of het in jouw geval uitmaakt of niet, al vermoed ik van niet.

Wat betreft je vraag, als er naast de save method nog een method van Foo dat path nodig heeft kan het het waard zijn. Een paar paths hardcoden in een bestand is zeker niet het ergste om aan te passen, daar hebben editors een search & replace optie voor. Maar als je het path buiten die class nodig hebt is het waarschijnlijk wel een goede reden om er een constante van te maken als het path niet configureerbaar is.
 
Ozzie PHP

Ozzie PHP

14/10/2013 15:51:55
Quote Anchor link
Dos Moonen op 14/10/2013 15:44:56:
Gebruik 'static' wanneer children het mogen overloaden, daar komt het op neer. Elke 'self' kan je zoals ik al zei in principe vervangen door de class naam van de class waarin de 'self' voorkomt. Voor 'static' is dit niet het geval. Als je dat zou doen kan het zijn dat kan het zijn dat dingen niet meer werken zoals ze horen te werken. Wanneer je 'self' zou vervangen door de class naam zal zoiets voor zover ik weet nooit voorkomen.

Ik kan dus niet met zekerheid zeggen of het in jouw geval uitmaakt of niet, al vermoed ik van niet.


Dos Moonen op 14/10/2013 15:44:56:
Wat betreft je vraag, als er naast de save method nog een method van Foo dat path nodig heeft kan het het waard zijn. Een paar paths hardcoden in een bestand is zeker niet het ergste om aan te passen, daar hebben editors een search & replace optie voor. Maar als je het path buiten die class nodig hebt is het waarschijnlijk wel een goede reden om er een constante van te maken als het path niet configureerbaar is.

Thanks! In dit specifieke geval heb ik het path maar in 1 method nodig en hoeft het niet van buitenaf te worden aangeroepen.

De vraag is dan dus of het nuttig en/of gebruikelijk is om het in een constante te zetten. Het enige dat ik in feite doe, is dus dat ik de naam van de directory niet in de method zelf zet, maar (middels een constante) bovenaan de class, buiten de code. Ik vind het ergens wel mooi, omdat je dan geen "data" in de method hebt staan, maar ik vraag me dus nog steeds af of het gebruikelijk is.
 
Dos Moonen

Dos Moonen

14/10/2013 16:11:52
Quote Anchor link
Ik vind het dan onnodig. Ook zijn constante altijd public, dus 'foobar/foo' zal dan zichtbaar zijn buiten de context van die methode, waar dus blijkbaar geen enkele reden voor is.
 
Ozzie PHP

Ozzie PHP

14/10/2013 16:16:30
Quote Anchor link
Oké. Heb er zelf ook nog even over nagedacht. Op zich vind ik het wel mooi om het buiten de code te halen, maar het is denk ik inderdaad een beetje overkill. Want als ik het hier doe, zou ik het overal, in alle classes, moeten doen. En het gaat om een eigen systeem, dus de kans is groot dat ik die directory nooit zal veranderen.

Maar dan wel nog een laatste tegenvraag. In wat voor gevallen gebruik je nu juist WEL class constanten?
 
NOLot -

NOLot -

14/10/2013 16:34:55
Quote Anchor link
Constanten die je buiten je class ook wilt gebruiken. Bijvoorbeeld de HttpKernelInterface van symfony, die heeft een methode handle, om een request af te handelen. Daar kun je aan meegeven of het een sub request of de main request is. De main request is gewoon een int 1, en de sub request een int 2. Dan kun je als gebruiker dit typen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$kernel->handle($request, 1); // main
$kernel->handle($request, 2); // sub


of

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$kernel->handle($request, HttpKernelInterface::MASTER_REQUEST); // main
$kernel->handle($request, HttpKernelInterface::SUB_REQUEST); // sub


In zo'n geval geeft een constante een stuk meer leesbaarheid
 
Dos Moonen

Dos Moonen

14/10/2013 16:39:26
Quote Anchor link
Ooit van magic numbers gehoord?

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 Magic {

  public function alakazam($mode = 0) {
    switch($magic) {
      case
0:
        ...

        break;
      case
1:
        ...

        break;
      case
2:
        ...

        break;
      case
3:
        ...

        break;
      case
4:
        ...

        break;
    }
  }


  $magic = new Magic;
  $magic->alakazam(4); // wat doet dit ooit?

}
?>


Versus

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
<?php

class Magic {

  // even te lui om hier constate te schrijven :p

  public function alakazam($mode = 0) {
    switch($magic) {
      case
Sience::COS:
        ...

        break;
      case
Sience::TAN:
        ...

        break;
      case
Sience::SIN:
        ...

        break;
      case
Sience::ACOS:
        ...

        break;
      case
Sience::ATAN:
        ...

        break;
      case
Sience::ASIN:
        ...

        break;
    }
  }


  $science = new Sience;
  $science->calculate(Science::TAN); // Ok, ik heb een idee wat dit doet.

}
?>


En dan zijn er nog use cases zoals versie nummers en codenames die gebruikt zouden kunnen worden om te bepalen of die versie van de software een feature wel ondersteund, of dat er een workaround voor een bug nodig is.

En bijvoorbeeld de constante Request::POST = 'POST', Request::GET = 'GET', Request::PUT = 'PUT', Request::UPDATE = 'UPDATE' wanneer je een om aan (new Request)->setMethod() mee te geven. Dan weet je al behoorlijk zeker dat methode Request::setMethod() die method ook echt ondersteund. Want als dat niet het geval is krijg je een melding dat die constante niet bestaat.
Gewijzigd op 14/10/2013 16:47:02 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

14/10/2013 16:49:59
Quote Anchor link
@NOLot: oké. Maar is dat de "vuistregel"? Dat je een constante gebruikt als je 'm van buiten de class wilt aanroepen?

@Dos: ah ja, die methode ken ik :)

Maar in general, gebruik je constanten alleen wanneer die van buitenaf moeten kunnen worden aangeroepen? Gebruik je een constante nooit enkel en alleen in de class zelf?
 
Dos Moonen

Dos Moonen

14/10/2013 18:19:23
Quote Anchor link
Dat komt inderdaad het meeste voor, ja. Maar het komt wel voor, http://kohanaframework.org/3.3/guide-api/Route is een voorbeeld. Route::REGEX_SEGMENT is nog te gebruiken (al is dat de default, dus ik zou niet weten waarom) bij het aanmaken van een route, maar de andere twee zal ik nooit nodig hebben.
 
Ozzie PHP

Ozzie PHP

14/10/2013 20:03:02
Quote Anchor link
Allright, thanks.
 



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.