[oop] gebruik defines

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Architect / Developer / C# / Azure / CQRS

Bedrijfsomschrijving Als Software Architect/Senior Developer kom je te werken bij een organisatie in regio Veenendaal wiens core business software development is voor oplossingen voor de vastgoed branche. Deze applicaties vormen de basis voor financiële processen en planningen en worden door een groot tal gerenommeerde organisaties in Nederland gebruikt. Samen met een team van 15 collega's (bestaande uit ontwikkelaars, testers, UX/UI Designer en een Product Owner), verdeeld over Nederland en een andere locatie in Europa, ga je als Software Architect / Senior Developer aan de slag om het gehele platform te moderniseren. Hiervoor maakten ze gebruik van Delphi en is het

Bekijk vacature »

.NET Developer

Bedrijfsomschrijving Our client is a leading software company in the region of Amersfoort. They offer solutions in the Cloud (SaaS) to more than 2 million users. Their software supports 2000 clients through different HR solutions. They do this together with 1000 colleagues. You will be part of the team that is focused on integrations. This is a small, driven and international team. As a .NET Developer you are responsible for developing self-service APIs in C# within a .NET-framework. You will also perform unit tests on what you have developed. These APIs are used to automate different HR processes for their

Bekijk vacature »

Java / Hippo developer

Functieomschrijving Randstad is een pionier in de hr-dienstverlening. Sinds de oprichting in 1960 zijn wij uitgegroeid tot dé grootste hr-dienstverlener in de wereld. Onze missie is om de wereld van werk te ontwikkelen. Dit doen wij voor iedereen die met werk te maken heeft: onze klanten, kandidaten, medewerkers en de maatschappij als geheel. In de hele wereld, en zeker ook in onze thuismarkt Nederland. Door onze passie voor mensen te combineren met de kracht van de hedendaagse technologie en innovatie, ondersteunen we mensen en organisaties bij het realiseren van hun ware potentie. Dit noemen we human forward. Randstad Groep Nederland

Bekijk vacature »

IAM developer

Functieomschrijving IAM, voor jou hoeven we dat niet te vertalen toch? Want jij weet exact waar wij het over hebben bij het benoemen van Identity Access Management. Ben je toe aan een informele, mensgerichte omgeving met vrijheid, ondernemerschap, creativiteit en focus op innovatie? Dat zijn wij! En laten wij nou op zoek zijn naar jou, een IAM developer die ons team helpt Randstad naar een veilige toekomst te helpen. Als IAM developer bij ons ben jij samen met de overige teamleden aanspreekpunt binnen de organisatie ten behoeve van functionele en technische vragen omtrent Identity & Access Management. Samen met andere

Bekijk vacature »

IT-traineeship Low Code Developer

Vind jij het leuk om veel contact te hebben met een klant en je te verdiepen in een domein? Lijkt het je interessant om enerzijds met de klant mee te denken, maar tegelijkertijd ook zelf een bijdrage te leveren aan de implementatie van een IT oplossing? Wij zijn op zoek naar starters die aan de slag willen als low-code engineer. In deze functie bouw je aan applicaties met behulp van een low-code platform, zoals Outsystems, Blueriq, Mendix of Pega. Dergelijke platformen stellen je in staat om snel een werkende applicatie te ontwikkelen en zijn hierdoor heel geschikt voor maatwerk projecten.

Bekijk vacature »

IT-Traineeship junior software programmeur

Zoek jij een stevige uitdaging en de mogelijkheid om veel nieuwe dingen te leren in een dynamisch vakgebied? Doe mee aan ons IT Professional Program en ontwikkel jezelf tot software engineer! Je begint met een opleidingstraject van ongeveer 4 maanden. Hierin ga je aan de slag met verschillende technieken die je op conceptueel niveau leert te overzien en interpreteren. Onderwerpen die aan bod komen zijn o.a. programmeren (Java/C#/Python), Object Oriëntatie, Databases, Webservices & webtechnologieën, Domain Driven Design en Continuous Integration/Continuous Delivery. Sommige van deze onderdelen sluit je af met een examen en bijbehorende certificering. Het opleidingstraject zelf sluit je af

Bekijk vacature »

Applicatiebeheerder

We zoeken voor deze functie een absolute kei op het gebied van SQL, Power BI, .NET Core, EDI, API en ERP-systemen. De ideale Applicatiebeheerder ziet het als een uitdaging om ook zelf de juiste oplossingen te bedenken en te bouwen en durft daarbij out-of-the- box te denken. Je bent communicatief vaardig en pragmatisch en weet met een natuurlijke drive de vertaling te maken van onze operatie naar gebruiksvriendelijke oplossingen voor interne en externe klanten. Om zo de spreekwoordelijke spil te zijn tussen mens en applicatie. Applicatiebeheerder Breda, 36-40 uur per week Herkenbaar? Lees dan verder wat je als Applicatiebeheerder gaat

Bekijk vacature »

BI Developer

Bedrijfsomschrijving De organisatie waar je komt te werken als (Senior) BI Developer is een grote internationale financiële instelling. Met vele vestigingen in Nederland zijn ze een belangrijke speler op de financiële markt. Jij zal hoofdzakelijk op het kantoor in Amsterdam werkzaam zijn, maar het kan ook voorkomen dat je af en toe naar een andere vestiging gaat. Het bedrijf telt ongeveer 5000 medewerkers waarvan ruim 150 ICT'ers. Het team waar je in komt te werken als (Senior) BI Developer is een ambitieus BI team dat zich bezighoudt met lokale en internationale uitdagingen. Zo zit een Junior BI Developer, 2 (Medior)

Bekijk vacature »

Angular Developer

Bedrijfsomschrijving De organisatie is een grote speler in de financiële branche met ongeveer 4500 medewerkers waarvan 450 IT-medewerkers. De organisatie staat continue in beweging en wil zich altijd blijven vernieuwen. Een belangrijk aspect voor deze organisatie is dat de klant altijd centraal staat. Binnen de afdeling waar je komt te werken wordt gezocht naar een ervaren Angular Developer. De afdeling bestaat uit twee scrum teams waarbij er altijd vanuit een DevOps manier wordt gewerkt, "You build it, you run it". De afdeling is verantwoordelijk voor het verder ontwikkelen van de webapplicatie en het beheer daarvan. Daarnaast is het team is

Bekijk vacature »

Java Developer

Bedrijfsomschrijving De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen zij met plezier en enthousiasme. De organisatie is te omschrijven als informeel, pragmatisch en dynamisch. Onze klant is opzoek naar een Junior Java Developer. Samen met een team van 8 engineers ben je verantwoordelijk voor alle software-innovaties en -optimalisaties, voor alle facetten binnen de organisatie. Denk hierbij aan back-end processen, apps en diverse widgets. Het

Bekijk vacature »

Skilled Support Engineer

Vacature: Skilled Support Engineer Locatie: Eindhoven Fulltime (40 uur) Salarisindicatie: marktconform (afhankelijk van kennis en ervaring) Per direct zijn wij binnen COM4 automatisering vanwege uitbreiding van onze dienstverlening op zoek naar een (Skilled) support engineer. Je werkplek Wij zijn een all-round partner voor ICT-dienstverlening voor MKB, met een klantgrootte van 25 tot 500 werkplekken. Met onze Managed IT Services bieden wij ondersteuning en zijn wij sparringspartner voor iedere organisatie, of er nu een eigen IT afdeling is of juist geen. Uw ICT is onze zorg, daar staan we voor en maken we ons hard voor richting onze klanten! De afdeling

Bekijk vacature »

Fullstack Developer /.NET Core

Bedrijfsomschrijving Als Fullstack Developer kom je te werken in de regio Almere bij een organisatie, dat als internationale marktleider opereert op het gebied van detailhandel. Vanuit ruim tienduizend locaties verkopen zij hun producten aan de klanten. Om diverse data en bedrijfsprocessen van HR, CRM tot inkoop overzichtelijk in beeld te hebben heeft de organisatie een bedrijf kritische applicatie ontwikkeld. Ter versterking van het development team, bestaand uit 6 ontwikkelaars, is de organisatie op zoek naar een ervaren Fullstack Developer. Als Full stack Developer zal je bezighouden met zowel het development als het onderhoud van de applicatie. Jouw werkzaamheden zullen 80%

Bekijk vacature »

Stage Web Developer

Internship Full-stack mobile developer Job description You are partly responsible for the development of the Front-end and / or Back-end of Nibblr. Depending on your qualities, you will be deployed for front-end or back-end activities. We prefer to train you as a full-stack developer, as the developers in the team are. You work on custom solutions using the latest techniques. Within the product development team you mainly work under the supervision of the Lead developer and interaction / visual designer who takes care of the creative and interaction side. You work together with other developers on new features. You also

Bekijk vacature »

.Net Developer

Bedrijfsomschrijving De organisatie is een grote internationale speler en draagt bij aan het geluk en plezier van werkende mensen. Op jaarbasis wordt de dienst door ruim 2 miljoen mensen gebruikt in binnen- en buitenland. De organisatie is te omschrijven als een innovatieve, jonge groep van professionals die zichzelf willen blijven ontwikkelen, veel verantwoordelijkheidsgevoel hebben en trots zijn op de dienst die wordt geleverd. Mede dankzij deze mindset groeit de organisatie en is er uitbreiding binnen het developmentteam. Als Full Stack/ .Net developer kom je te werken in een scrumteam van 7-8 personen. Men werkt met de nieuwste technieken (.Net core,

Bekijk vacature »

Software Engineer C++ / Software Developer C++

Software Engineer C++ / Software Developer C++ (Bsc, MSc, Computer Science, Information Technology, Mathematics, C, C++, Linux, Algorithms) General Do you find great joy in software development, which is then used worldwide, and are you familiar with C++ and with algorithms… read on! Organization For our business client, a fast dynamic technical company which gathers and processes huge amounts of data, we are looking for several Software Engineers. You will be part of a team consisting of about 25 software developers working on a suit of advanced software tools. These software tools are then used further on in the company

Bekijk vacature »
Ozzie PHP

Ozzie PHP

11/06/2014 10:23:41
Quote Anchor link
Hey guys,

Een kort vraagje. Mogen onderdelen van een framework vertrouwen op defines? Stel je hebt een kernel class en die heeft het root path nodig. Vevolgens zijn er nog een paar andere classes die ook het root path gebruiken. Nu kan ik aan de constructor van de kernel class het root path meegeven. Vervolgens geeft de kernel class het root path weer door aan andere classes. Dat is optie 1. Ik vraag me nu af of het oké is om alvorens de kernel class aan te roepen het root path te definen en dan in de kernel class en op overige plekken waar het nodig is gebruik te maken van de defined constant. Dus in plaats van telkens via de constructor het root path door te geven, define je het root path eenmalig en gebruik je overal die constant. Is dat oké?
Gewijzigd op 11/06/2014 10:29:36 door Ozzie PHP
 
PHP hulp

PHP hulp

12/04/2021 00:21:47
 
Ward van der Put
Moderator

Ward van der Put

11/06/2014 10:58:15
Quote Anchor link
Ja, ik vind dat dit moet kunnen.

Je moet per slot van rekening ergens beginnen, anders wordt configureren een onoplosbaar kip-en-eiprobleem. Om bijvoorbeeld iets te kunnen laden met een autoloader, moet je eerst de autoloader zelf laden en dus expliciet declareren wáár die te vinden is.

Definieer je niet expliciet constanten, dan is er altijd nog een standaardconfiguratie waarop veel standaardklassen impliciet blindvaren of terugvallen: php.ini. Daar heb je dus nog wel een keuze. Bijvoorbeeld verbindingsparameters voor de databaseserver kun je in constanten of in php.ini vastleggen.
 
Ozzie PHP

Ozzie PHP

11/06/2014 11:06:45
Quote Anchor link
Oké, thanks.

Maar het is dus niet "fout"?

Eerst deed ik dus bijv. dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$root_path
= dirname(__DIR__);
...

$kernel = new Kernel($root_path);
?>

En nu zou ik dan gewoon dit doen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
define('ROOT_PATH', dirname(__DIR__));
...

$kernel = new Kernel();
?>

Het is dus niet "verkeerd" dat die kernel vertrouwt op een defined constant die buiten de class wordt aangemaakt?
Gewijzigd op 11/06/2014 11:07:57 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

11/06/2014 11:17:39
Quote Anchor link
Klassen die van buitenaf geconfigureerd moeten worden, zijn onvermijdelijk; denk bijvoorbeeld maar aan databaseconnecties.

Je kunt zo'n declaratie beter wel expliciet maken, dus die ergens in het script uitschrijven. Of je plaatst de volledige configuratie centraal in één gemeenschappelijk config.ini of in een gedeelde interface, als het maar logisch, duidelijk en consistent is. Je wilt geen class Kernel in Kernel.php hebben die achter de schermen en daarmee onzichtbaar iets uit een kernel.ini gebruikt.
 
Ivo P

Ivo P

11/06/2014 11:19:32
Quote Anchor link
Ozzie was toch laatste bezig met een class waarin allerlei constanten gedefinieerd werden?

Ik dacht dat dat als container zou gaan dienen, voor wat je nu weer anders benadert.

Toevoeging op 11/06/2014 11:22:01:

kan het topic niet terug vinden
 
Joakim Broden

Joakim Broden

11/06/2014 11:24:05
Quote Anchor link
Zelf gebruik ik die defines als fallback. Ik heb een config class, en daar staan alle defines in (als het goed is ;-)). Zo kan ik alles via de config aanroepen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $config
->get('root_path', ROOT_PATH);
?>

Eerste param is de key van de config array, bestaat hij niet dan geeft hij de 2de param terug.
Gewijzigd op 11/06/2014 11:25:03 door Joakim Broden
 
Ozzie PHP

Ozzie PHP

11/06/2014 11:29:12
Quote Anchor link
>> Klassen die van buitenaf geconfigureerd moeten worden, zijn onvermijdelijk; denk bijvoorbeeld maar aan databaseconnecties.

Goed punt. Maar inderdaad. Zo'n configuratie zou ik in een apart bestand zetten. Maar een root path heb je op diverse plekken nodig, daarom is een define in dit geval wel mooi denk ik.

>> Ozzie was toch laatste bezig met een class waarin allerlei constanten gedefinieerd werden?

Ik gebruik wel een container, en daar komen ook paden in. Maar om die te maken, moet ik wel eerst een root path hebben :)

Zo'n root path heb je op een paar plekken nodig. Mijn 1e gedachte was dus om een variabele te gebruiken en die door te geven aan de constructor van de kernel, en de kernel geeft 'm dan weer door aan de class die de absolute paden aanmaakt. Maar wat er dus gebeurt is dat ik telkens dat root path via de constructors loop door te geven. Een define is dan denk ik handiger.
 
Dos Moonen

Dos Moonen

11/06/2014 11:46:27
Quote Anchor link
Houd wel rekening met namespaces: http://3v4l.org/GlqSD
Vanaf PHP 5.6 kun je functies en contanten importeren: https://wiki.php.net/rfc/use_function
 
Ozzie PHP

Ozzie PHP

11/06/2014 13:23:43
Quote Anchor link
Geinig, ik wist niet dat je ook op namespace niveau kon definen. Dat kan nog wel eens van pas komen.

Thanks!
 
Wouter J

Wouter J

11/06/2014 18:01:14
Quote Anchor link
Elke functie, of het nou een klasse functie is of iets anders, mag NOOIT iets van de context gebruiken1. Het mag zelfs niks van de context weten. Op deze manier ben je namelijk volledig afhankelijk van die context.

Dat is precies de rede waarom je superglobals niet in functies moet gebruiken, waarom het "global" keyword uit den boze is en waarom "passed by reference" zo verkeerd is. Aan dat rijtje mag je nu ook toevoegen: Het gebruik van globale constanten in een functie.

1) Er zijn hier uitzonderingen voor, de zogenaamde IO functies, maar die kom je maar zelden tegen. Dat is bijv. de echo functie (als dat een functie zou zijn) en een fwrite functie.
 
Ozzie PHP

Ozzie PHP

11/06/2014 21:07:17
Quote Anchor link
Jij bent dus TEGEN het gebruik van defines als ik je goed begrijp?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/06/2014 22:09:15
Quote Anchor link
Nee Wouter is niet tegen defines. Wat wouter zegt is dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
define("CONSTANT", "Hello world.");

function
shoutOut($text)
{

    echo '<b>' . $text . '</b>';
}


shoutOut(CONSTANT);
?>


en niet dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
define("CONSTANT", "Hello world.");

function
shoutOut()
{

    echo '<b>' . CONSTANT . '</b>'; // fout: constante in een functie!
}

shoutOut();
?>
 
Ozzie PHP

Ozzie PHP

11/06/2014 22:13:04
Quote Anchor link
@Frank

Ben jij het daar mee eens? Bij mij gaat het enkel dan om een ROOT_PATH constant die ik op een paar plaatsen nodig heb om bijv. configuratiebestanden in te lezen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/06/2014 22:15:51
Quote Anchor link
Zie een define als een soort automatische copy & paste functie.
Nog voor de compilatie (in talen als C) en uitvoering van het programma worden de constanten vervangen door de tekst/waarde waar de constante voor staat.

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
<?php
// jouw code
define("CONSTANT", "Hello world.");
echo CONSTANT;

//   |
//   |
//   V

// PRECOMPILER

//   |
//   |
//   V

// resultaat:

echo "Hello world.";

?>


Toevoeging op 11/06/2014 22:21:36:

Ik vind een root path meer een configuratie variabele die door een gebruiker (lees systeembeheerder) nog aangepast mag worden. Indien jij van mening bent dat dat in jou geval er NOOIT een reden zal zijn waarbij de root path zal hoeven te wijzigen (door iemand anders dan de programmeur zelf) dan kun je deze prima met een define aanmaken.

Wat ik bedoel te zeggen is dat een define iets in de programmacode is en dus nooit meer gewijzigd kunnen worden door mensen die niet bij de source kunnen.
 
Ozzie PHP

Ozzie PHP

11/06/2014 22:24:42
Quote Anchor link
>> Indien jij van mening bent dat dat in jou geval er NOOIT een reden zal zijn waarbij de root path zal hoeven te wijzigen (door iemand anders dan de programmeur zelf) dan kun je deze prima met een define aanmaken.

Nee, een root path is een root path toch :) Daar hoeft inderdaad niemand anders dan de programmeur bij te komen. Dus in dat geval geen probleem begrijp ik?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/06/2014 22:27:19
Quote Anchor link
goede voorbeelden van defines zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
define("DB_PREFIX", "ozzie_");
define("PI", 3.14159265359);
define("SUPERADMIN_PASSWORD", "llZMPyQSu+nPNmXPa78HbpbRRwNOypjFeZP5izOmHiDjmns/QJrCJkUqnkCSHeQoBWNakj/RYykd6/E33vFDJA==");
?>
 
Wouter J

Wouter J

11/06/2014 22:29:00
Quote Anchor link
>> Dus in dat geval geen probleem begrijp ik?

Zie hier het framework zelf en het project waarin je het gebruikt als 2 andere dingen. Wanneer het binnen het framework *altijd* (dus in ieder project) hetzelfde is, dan nog zou ik het niet doen, maar dan zou Frank zeggen: doen. Wanneer dit niet het geval is en je het per project moet veranderen dan zijn Frank en ik het met elkaar eens: Niet doen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/06/2014 22:31:09
Quote Anchor link
Als je écht zeker weet dat het nooit zal veranderen en vast in je sourcecode mag komen te staan dan is het goed maar dat bevreemd mij nogal.. Ik kan me situaties indenken waarin je een root-path toch wilt wijzigen. Denk maar eens aan de overstap van een windows-server naar een linux-server.
 
Ozzie PHP

Ozzie PHP

11/06/2014 22:36:10
Quote Anchor link
>> Wanneer het binnen het framework *altijd* (dus in ieder project) hetzelfde is, dan nog zou ik het niet doen, maar dan zou Frank zeggen: doen.

Wouter, waarom zou jij het niet doen? Het alternatief is het doorgeven via de constructor. Dat is toch ook een beetje overkill? Het is een vaste waarde die verder niet hoeft te worden aangepast. Ik ben het volledig met je eens dat je het in 99% van de gevallen niet moet doen, maar hier zou het toch kunnen lijkt me.

>> Ik kan me situaties indenken waarin je een root-path toch wilt wijzigen. Denk maar eens aan de overstap van een windows-server naar een linux-server.

Je kan een root path van je framework dynamisch genereren, bijv: define('ROOT_PATH', __DIR__)

Of define('ROOT_PATH', '/path/to/framework')

Waarom zou je een root path willen wijzigen... snap niet helemaal wat je bedoelt :(
 
Wouter J

Wouter J

11/06/2014 22:40:17
Quote Anchor link
>> Waarom zou je een root path willen wijzigen... snap niet helemaal wat je bedoelt :(

Goed, hij was eerst:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
define('ROOT_PATH', 'C:/Users/Ozzie/projects/een-bedrijf');
?>


Nu verplaats je naar een linux server en tada:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
define('ROOT_PATH', '~/projects/een-bedrijf');
?>


>> Het is een vaste waarde die verder niet hoeft te worden aangepast.

Oh nee? Ik zal altijd aanraden om in productie de ROOT buiten de web root te laten vallen. Tadaa: dat is al wat anders dan in een development omgeving.
 
Ozzie PHP

Ozzie PHP

11/06/2014 22:49:36
Quote Anchor link
>> Nu verplaats je naar een linux server en tada:

Ja, dan pas je 'm toch eenmalig aan in je index.php? Het gaat erom dat je 'm eenmalig defined (hoe je dat doet boeit toch niet?)

>> Oh nee? Ik zal altijd aanraden om in productie de ROOT buiten de web root te laten vallen. Tadaa: dat is al wat anders dan in een development omgeving.

Wat bedoel je nu? Kun je dit toelichten? Ik snap echt even niet wat je bedoelt. Onder de root map, versta ik de map waarin de public en de private directory staan.
 



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.