[oop] gebruik defines

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior PHP Developer

Functie omschrijving Ben jij een getalenteerde PHP Developer en aan de slag in een gemotiveerd team? Lees dan snel verder! Voor onze opdrachtgever in de omgeving van Valkenswaard zijn we op zoek naar een ervaren PHP developer. Jij gaat hier zorg dragen voor het optimaliseren en up-to-date houden van de bestaande applicaties. Je werkt verder aan de applicaties die jij verder ontwikkelt. Dit doe je voornamelijk met PHP en MySQL. Verder ga je je bezig houden met: Het uitbouwen van het E-commerce software platform. Deelnemen aan overleggen met het team. Het ondersteunen van jouw team developers (3 man) en helpen

Bekijk vacature »

Front end developer

Functie Qua type opdrachten is er echt een verscheidenheid aan afnemers, zo werken ze met grote multinationals, maar ook met startups. Zo kom je te werken in een gevarieerde omgeving en kan je ook schakelen tussen verschillende culturen. De projecten variëren van greenfield projecten tot langdurige ontwikkeltrajecten. Hier wordt alleen maar gewerkt met aan front end projecten. Daarom maakt het onze partner niet uit waar jij kennis van hebt, als je maar gedegen kennis hebt van Javascript frameworks, Unit testing en ook bekend bent met de scrum methodiek. Eisen Minimaal 4 jaar relevante werkervaring Kennen en ervaring van Javascript frameworks

Bekijk vacature »

Als PHP developer (Symfony) bijdragen aan betere z

Functie Als Medior/Senior PHP developer wordt er een mate van zelfstandigheid verwacht, maar ook dat je goed in een team kunt opereren waar kennis wordt gedeeld en er bijvoorbeeld codereviews plaatsvinden. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden geactualiseerd.

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van Software Developer! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van ervaren

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar ga jij aan de slag bij een van onze klanten actief in de High Tech Industrie. Onze klanten zijn voornamelijk gelokaliseerd in de omgeving van Eindhoven. Wij zijn erg selectief als het gaat om de projecten die wij accepteren en richten ons dan ook alleen op innovatieve en complexe projecten. Omdat onze klanten voornamelijk gespecialiseerd zijn in de machinebouw, werk jij ook vaak dicht tegen de machines aan. Ons team bestaat momenteel uit Embedded engineers, IOT developers en Cloud engineers. Wij werken voornamelijk aan Microsoft projecten waar er gebruik wordt gemaakt van WPF, UWP, .NET Core

Bekijk vacature »

Lasrobotprogrammeur/operator

Heb je interesse in trekkers en beschik je overvlijmscherpse precisie? Solliciteer dan op deze vacature! Als Lasoperator ben je vooral bezig met het maken van nieuwe lasrobotprogramma’s en het optimaliseren van bestaande programma’s, zowel online als offline (incl. het bedienen van de Lasrobots). Daarnaast draag je bij aan een optimaal rendement van de las robots. Verder heb je de volgende werkzaamheden: Het meewerken als operator c.q. Robotlassen niveau 2 (van complexe samenstellingen/halffabricaten), het om- en instellen van de diverse stations van lasmallen (productdragers), het afwerken van laswerk (verwijderen lasspetters en oxiden), het bewaken van de machineplanning (op bewerkingen) incl. de

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 »

Cloud Developer

Cloud Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Front end developer React Sportgames

Functie Als Front end developer ga jij aan de slag bij een gave en bekende organisatie op het gebied van sportgames. Jij gaat aan de slag in een scrumteam met 6 developers die gepassioneerd en actief bezig zijn om spelers kwalitatieve en mooie spelervaringen aan te bieden. Als scrumteam werken ze in drie wekelijkse sprints en begin je iedere ochtend met een stand-up. Als Front end developer werk jij bij deze organisatie voornamelijk met Javascript, html, css en React. Er wordt veel gebruikt gemaakt ook van C#, Docker en Kubernetes. Het team hecht veel waarde aan het leveren van hoogwaardige

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 »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

Junior Low-code ontwikkelaar gezocht omgeving Arnh

Bedrijfsomschrijving Wij zijn een dynamisch IT-bedrijf dat zich richt op het stroomlijnen van bedrijfsprocessen en het creëren van ondersteunende applicaties. Onze kracht ligt in het combineren van zakelijk inzicht met IT-expertise via gestroomlijnde procesontwerpen en wendbare applicatieontwikkeling met behulp van Low-code technologieën. Als jonge professional krijg je de kans om samen te werken met een team van 15 deskundige collega's, verspreid over nationale en internationale locaties. We bieden je een leerzame omgeving waar je je vaardigheden kunt ontwikkelen en groeien in je rol als Low-code ontwikkelaar. Word jij onze nieuwe Junior Low-code Ontwikkelaar (OutSystems)? Versterk ons team en draag bij

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

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

26/04/2024 13:10:26
 
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.