[oop] gebruik defines

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Delphi Programmeur

Functie omschrijving Onze opdrachtgever is gespecialiseerd in kantoor-bedrijfssoftware en zit gevestigd in omgeving Numansdorp. Als programmeur ben jij bij dit bedrijf met het volgende bezig; Je vertaalt technische en functionele ontwerpen naar kwalitatieve software. Je ontwikkelt, ontwerpt en test software. Je maakt daarbij veel gebruik met de volgende tools & technologieën: Delphi 10.3 (Rio), QuickReport 6. Je krijgt in deze rol veel vrijheid en verantwoordelijkheid. Je levert projecten van A - Z op, en werkt daarbij projectmatig en gestructureerd. Bedrijfsprofiel Dit bedrijf richt zich op maatwerk software oplossingen. Deze software oplossingen worden ingezet in de financiële branche. Het betreft een

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij toe aan een nieuwe uitdaging en werk je graag en goed in C++ en C#? Dan zijn we op zoek naar jou! Dit bedrijf is dé specialist op het gebied van automatiseringssoftware voor een specifieke branche en ze zijn per direct op zoek naar versterking in hun development team. Wat jij gaat doen binnen jouw rol als C++ ontwikkelaar; Je vertaalt de wensen van gebruikers naar een functioneel ontwerp. Je houdt je bezig met het ontwerpen, programmeren en testen van product aanpassingen. Je gaat nieuwe product releases implementeren in de projectteams. Je gaat de effecten van nieuwe

Bekijk vacature »

PHP developer (Laravel/Vue.js)

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Back end developer PHP

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 25 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

.NET developer WO niveau voor predictive software

Bedrijfsomschrijving Dit bedrijf uit Den Bosch is om precies te zijn 15 medewerkers groot en ze ontwikkelen (predicitve) planning software. Dit doen zij voor allerlei mooie en bekende organisaties (bierbrouwerijen, gemeentes, oliemaatschappijen en diverse multinationals). Wegens meer en grotere vraag vanuit de klanten komen er nu posities vrij voor onder andere een .NET developer. Het bedrijf is goed met openbaar vervoer te bereiken. Functieomschrijving Je komt hier te werken in een team van 3 .NET developers en bent betrokken bij het gehele ontwikkelproces. Dus van idee naar ontwerp en van ontwikkeling tot testen en implementatie. Bij voorkeur ben je niet

Bekijk vacature »

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 »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

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 »

Medior Java developer

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 »

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 »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Roosendaal, ontwikkel je als PHP Developer niet alleen webapplicaties, maar ben je verder ook gefocust op het continu inspelen op nieuwe trends en ontwikkelingen m.b.t software development. Naast het bouwen van webapplicaties, ontwikkelen zij ook webshops en websites voor gave opdrachtgevers! Wat ga je doen? Het schrijven van schone en efficiënte codes volgens het Symfony framework; Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het Symfony framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de

Bekijk vacature »

Front-end Developer

Do you want to work with the latest technologies on the development of new systems and applications? Create elegant interfaces using VueJS for thousands of users? Get moving and strengthen Nederlandse Loterij as a Front-end Developer. Thanks to your efforts, our services are always presented in style. As a Front-end Developer you are responsible for website development and improving customer experience based on data analyze. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Front-end Developer you score by: Writing elegant, testable components without side-effects to provide functionality to the users Website development, adding

Bekijk vacature »

Lasrobot Programmeur

Over de functie Off-line programma’s maken die het beste resultaat bij de lasrobot mogelijk maken De programma’s met behulp van teach verder optimaliseren Proactief meedenken over oplossingen en over de juiste invulling van lasmallen Het lasrobotproces zoveel mogelijk optimaliseren Over het bedrijf Onze opdrachtgever is gespecialiseerd in de engineering, productie en assemblage van samengestelde plaatwerkproducten en monodelen uit metaal. Onze klant werkt samen met het team aan de mooiste producten van de toekomst. Binnen dit bedrijf staat een sterk team van specialisten op het gebied van industrial design, mechanical engineering, in-house prototyping en all-round projectmanagement. Met daarbij uiteenlopende kennis in

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

25/04/2024 04:27:54
 
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.