[oop] gebruik defines

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Front-end developer - working on software for arou

Functie They have recently started looking for an experienced Front-end (mobile/app) developer. Because of the short lines within the team, they are also looking for someone who can communicate with the service desk, sales and support for technical questions. You will join their IT team consisting of about 10 colleagues divided over two teams in rooms opposite each other. Half of these are involved in their front-end. You will work together with, among others, the Architect, 1 senior, 1 junior and there is a Team Leader. In terms of technology, they work with a unique tech-stack, particularly because of the

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Als junior .NET Developer lever je met jouw oplossingen direct een bijdrage aan de bedrijfsprocessen van de klanten. Werkzaamheden waar jij je zoal mee bezig houdt zijn; Het ontwikkelen, onderhouden en optimaliseren van de draaiende platforms van de klanten; Softwareontwikkeling middels C#, .NET; Klantcontact om de wensen te bespreken en uit te werken; Optimaliseren van de (huidige) bedrijfsprocessen; De IT-afdeling bestaat uit 30 personen verdeeld over 3 teams. Het team waar je in terecht komt bestaat uit ongeveer tien man. Het is een team wat bestaat uit betrokken collega’s, waar iedereen bereidt is om elkaar te

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

Bekijk vacature »

.NET developer

Functie Jouw team van vier collega .NET developers is verantwoordelijk voor het bouwen van de ETL processen van jouw nieuwe werkgever. Op dit moment wordt de front-end gedaan door een extern team van professionals. Echter wilt jouw nieuwe werkgever graag intern deze kennis uitbreiden en heeft dan ook de ambitie om dit voor het eind van het jaar intern te gaan aanpakken. Dit betekend dat jij als .NET ontwikkelaar de ideale kans krijgt om jezelf samen met jouw collega’s te ontwikkelen als full stack developer. Als .NET ontwikkelaar werk jij bij deze gave werkgever met C# .NET, SQL, JavaScript, REST

Bekijk vacature »

Back-End Developer in Laravel / PHP

Functie omschrijving Wij zijn op zoek naar een Medior PHP Laravel Developer voor een gaaf bedrijf in de omgeving van Amsterdam! Voor een enthousiast team die zich graag bezig houdt met softwareontwikkeling zijn wij op zoek naar versterking. Je werkt in een klein ontwikkelteam en bent zeer betrokken bij alle aspecten van de softwareoplossingen. Van het ontwerpen tot de oplevering. Binnen deze functie ga je aan de slag met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je krijgt veel te maken met koppelingen naar systemen en de verzoeken van de klant. Je komt terecht in een team, waarbij

Bekijk vacature »

.NET Developer C#

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken Als C# .NET Developer wordt je verantwoordelijk voor het ontwikkelen van applicaties voor belangrijkste product van deze organisatie. Dit product is een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Er

Bekijk vacature »

Front-end Developer

Functie omschrijving Wij zijn op zoek naar een Front-end Developer! Als Front-end Developer binnen dit softwarebedrijf ga je de frontends voor zowel je eigen interne projecten als die voor klanten opzetten, onderhouden en uitbreiden. Je zet ideeën om naar mooie successen voor de klanten. Dat is in een notendop wat je gaat doen! Wat kun je verwachten? Je werkt aan de doorontwikkeling van bestaande maatwerkapplicaties. Bijvoorbeeld wanneer de klant de applicatie wil uitbreiden met een nieuwe feature; Samen met het team van backenders en desginers zet je nieuwe ideeën van klanten om naar mooie oplossingen; Je werkt met verschillende frameworks.

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 »

Java/Kotlin Developer

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

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in de regio van Bergen op Zoom ben je als PHP Developer niet alleen gefocust op het ontwikkelen van Software. Daarnaast ben je ook voortdurend bezig met het zoeken naar nieuwe mogelijkheden en innovaties die essentieel kunnen zijn voor de efficiëntie van software ontwikkeling. Je deelt veel kennis en informatie met het team en ontvangt deze dan ook graag terug. Techstack: PHP, Symfony & mySQL. Bedrijfsprofiel Deze uitdagende opdrachtgever is ruim 20 jaar actief in de regio Bergen op Zoom. Het vooruitstrevende team staat de hele dag voor je klaar om je te helpen en ondersteunen.

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

Medior front-end developer gezocht (€3.300 -

Functie Wat ga je doen? Jij als front-end developer gaat werken binnen de teams van/voor onze klant. Je werkt in een team met starters en ervaren ontwikkelaars met allemaal 1 overeenkomst; passie voor het vak. Maak je een fout? Geen probleem, leer ervan en ga dan weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en jezelf dus snel ontwikkelen. Wat hebben we jou te bieden? • Uitdagende projecten bij mooie klanten (bij jou in de buurt, of binnenkort intern vanuit ons kantoor!) • Een jonge organisatie met talentvolle collega’s • Veel ruimte voor

Bekijk vacature »

Low Code Developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten in heel het land! Wat ga je hier zoal doen? Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan

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

19/05/2024 11:16:01
 
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.