class constants

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SAP HANA Cloud Application Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12662 Introductie HANA Cloud Application Developer at a High Tech company. The company is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. This role is situated in the Big Data Analytics (BDA) Domain. The teams have mixture of young talent and senior specialists and have a

Bekijk vacature »

Magento2 Developer

Functie Ben jij een ontwikkelaar en wil jij een volgende stap zetten en als teamlead aan de slag? Lees dan snel verder! Voor een gewilde opdrachtgever in omgeving Delft zijn wij op zoek naar een programmeur die als meewerkend voorman aan de slag wilt gaan. Een developer die een team van twee man aan zal sturen. Jouw werkzaamheden zullen er als volgt uitzien; Ontwikkelen en ontwerpen van API's; Maatwerkoplossingen; Databeveiliging; Optimalisatie webshops; Ontwikkelen technische implementaties voor verbetering database; Aanspreekpunt voor de organisatie en verantwoordelijk voor de aansturing van externe developers. Zoek je veel uitdaging en veelzijdigheid in je werk dan

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam 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 klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

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 »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Applicatieontwikkelaar ABAP

Bedrijfsomschrijving Functieomschrijving De kandidaat zal worden ingezet binnen een van de DevOps teams binnen SCI (Service Centrum Inburgering) voor het ontwerpen en bouwen in SAP ABAP van de binnen SCI gebruikte informatiesystemen. Voornaamste voorkomende werkzaamheden zijn het aanpassen van en bouwen van nieuwe programmatuur in ABAP (Objects), waarbij ook gebruikt wordt gemaakt van DDD (Domain Driven Design) en het opstellen/aanpassen van Functionele/Technische ontwerpen. Daarnaast moeten ook formulieren met SAP Smartforms worden aangepast. Verder speelt de overgang naar SAP4Hana en SAP CPI. Vanwege het veelvuldig gebruik van SAP PO is kennis hiervan een pré. Achtergrond opdracht Momenteel werken meerdere DevOps teams

Bekijk vacature »

Als Lead PHP developer bijdragen aan het onderwijs

Functie Als Lead PHP developer zet je samen met het team en de andere lead developers de technische lijnen uit als het gaat om het ontwikkelen van de applicaties en bepaal je samen met de PO waar elke sprint aan gewerkt zal worden. Je kunt op basis van een user story een goede aanpak formuleren en een planning opstellen, en andere hierin meenemen. Wanneer je team code schrijft verwacht je degelijke oplossingen, bij voorkeur gebruik makend van Domain Driven Design. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit

Bekijk vacature »

E-Identity Developer met Projectleider Kwaliteiten

Functieomschrijving Voor de kamer van koophandel zijn we op zoek naar een E-Identity developer met projectleider kwaliteiten. Voor deze opdracht zoekt KVK een Informatieanalist met Technisch Projectleider en ICT developer kwaliteiten, met kennis van E-identity. We zoeken in de breedte en niet specifiek in de diepte qua skillset. Een Junior Projectmanager, een Junior Informatieanalist, een Junior Developer (full stack), een Junior Designer en een Junior ICT architect ineen, met een sterk gevoel van stakeholder management en planning vaardigheden. Door de internationale setting, én de realisatie van ontsluiting van en naar basisregisters toe zijn wij op zoek naar enige ervaring binnen

Bekijk vacature »

Senior Front-End Developer

As a Senior Front-end Developer you maintain the balance between creativity and functionality for our webshop, and you coach your fellow developers. How do I become a Senior Front-End Developer at Coolblue? As a Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. Would you also like to become a Senior Front-End Developer at Coolblue?

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 »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

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 »

HBO startersfunctie .NET Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Ben je in januari 2023 klaar met je HBO opleiding en zoek je een mooie uitdaging? Wacht niet langer en solliciteer direct! Voor een familiebedrijf in de regio van Boxtel ben ik op zoek naar een C#.NET Ontwikkelaar. Jij gaat aan de slag met de (door)ontwikkeling van de maatwerksoftware projecten en gaat ook nieuwe software bouwen, middels de Microsoft-stack. Het bedrijf maakt gebruik van de volgende technieken: C# & ASP.NET; MVC; MS SQL; Entity Framework; Je krijgt hier veel tijd om te leren en eventueel door te groeien en het

Bekijk vacature »

.NET Developer Senior

Dit ga je doen Het ontwikkelen van backend applicaties in C#; Het maken van vele koppelingen met andere ERP-applicaties zoals JD Edwards en SAP; Je bent (mede) verantwoordelijk voor het opstellen van technisch ontwerpen voor de te ontwikkelen software oplossingen; Je bent gemiddeld 90% van je tijd inhouse oplossingen aan het ontwikkelen en testen. De overige 10% van je tijd ben je bij klanten op locatie om oplossingen te implementeren, klanten te begeleiden en de software verder te innoveren; Naast het zelfstandig ontwikkelen van software oplossingen ben je ook bezig met het waarborgen van je contacten bij de klant, het

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

27/11/2024 21:15:55
 
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.