autoloading psr-0 psr-4

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Developer / PHP

Bedrijfsomschrijving Voor een organisatie in regio Eindhoven zijn wij op zoek naar een Software Developer met goede kennis van PHP. Het gaat om een software bedrijf dat te omschrijven is als informeel en open. De mensen die er werken zijn enthousiast, willen graag goede kwaliteit neerzetten, nieuwe technieken worden omarmt en alles is zo ingericht dat nieuwe tools/technieken gemakkelijk geïntegreerd kunnen worden. De organisatie is erg technisch georiënteerd, men gaat echt voor software development en heeft passie voor het vak. Er wordt geïnvesteerd in medewerkers door bijvoorbeeld opleidingen, cursussen en echt tijd voor onderzoek en innoveren. Je krijgt al snel

Bekijk vacature »

.NET Ontwikkelaar Medior

Bedrijfsomschrijving Je komt als Ontwikkelaar te werken bij een organisatie die is gespecialiseerd in industriële automatiseringsoplossingen. De organisatie heeft al ruim 45 jaar ervaring met optimalisatie van processen binnen de industriële sector. De organisatie kenmerkt zich als innoverend, meedenkend en informeel. Binnen het team heerst er een positieve teamspirit met een gezonde dosis ondernemerschap en humor. Werk moet immers ook leuk zijn, toch? Je zult als .NET Developer gaan werken aan verschillende projecten om software te ontwikkelen voor klanten in de logistieke sector. Je zult zowel met het team als zelfstandig ontwikkelen. Je houdt je bezig met het opstellen van

Bekijk vacature »

ITers die willen omscholen tot Low Code Developer

Bedrijfsomschrijving Voor verschillende klanten van mij ben ik opzoek naar Low Code Developers voor verschillende platformen. Denk aan Mendix, Outsystems, Pega etc. Naast seniors en mediors zijn junioren ook erg interessant voor bedrijven, je kan dan nog goed leren hoe het bedrijf werkt met hun eigen product. Wanneer je al ervaring hebt ik de IT branche, is de overstap naar Low Code niet moeilijk, maar zeker een goede stap vooruit. Dus heb jij altijd al willen Developen dan is dit je kans. Functieomschrijving Jouw functie als Low Code Developer kan verschillende kanten op gaan. Je kan intern gaan programmeren voor

Bekijk vacature »

Java Developer / Redesign / Complex / Overheid

Bedrijfsomschrijving Bij deze overheidsinstantie zal je terecht komen in een DevOps team van 5 man/vrouw groot. 4 daarvan houden zich bezig met het (door)ontwikkelen van de applicaties en 1 iemand is verantwoordelijk voor het testwerk. Echter, doordat ze steeds meer geautomatiseerd testen en richting CI/CD willen gaan, zal jij je daar ook zeker mee gaan bemoeien! Zoals gezegd kom je in een erg complexe omgeving terecht. Dit heeft voornamelijk te maken met het feit dat je met diverse Europese lidstaten en veel verschillende componenten te maken hebt. Dit maakt het daardoor erg uitdagend, maar niet minder leuk! Daarnaast zijn zij

Bekijk vacature »

Senior/Lead .NET Developer/Architect - interne fun

Bedrijfsomschrijving Voor een informele organisatie, gevestigd in Den Haag, ben ik op zoek naar een Senior .NET Developer/Architect die het leuk vindt om regelmatig de leiding in een team te nemen. Het gaat hier om een interne functie waarbij je komt te werken aan een in-house ontwikkeld product. Je komt terecht in een klein en informeel ontwikkelteam, bestaande uit een handvol ontwikkelaars, het hele team bestaat uit ongeveer 30 personen. Het hoofdproduct waaraan jullie werken is het beste te bestempelen als een HR systeem voor grote bedrijven. Met het product van jouw nieuwe werkgever worden alle HR gerelateerde zaken, bijvoorbeeld

Bekijk vacature »

Software Developer die een bijdrage levert aan de

Dutch is mandatory for this position. Vind jij het belangrijk om een baan te hebben die bijdraagt aan een schonere wereld? Een baan waarbij je direct impact hebt in het digitalisering van informatiestromen, oftewel een wereld zonder papier. Doormiddel van hun eigen ontwikkelde software kunnen bedrijven digitaal documenten beheren, delen, ondertekenen en archiveren. Dat betekent dat er geen printers of scanners meer nodig zijn en je bent niet meer afhankelijk van koeriers. Dit scheelt tijd, geld en grondstoffen. Samen met een team van vijf developers ga je nieuwe software oplossingen ontwikkelen. Daarnaast ga je ook nieuwe gebruiksvriendelijke functionaliteiten aan onze

Bekijk vacature »

Cobol Programmeur tijdelijk

Functieomschrijving Ben jij een Cobol programmeur en wil je een toffe opdracht uitvoeren bij een hele bekende overheidsinstelling in Den Haag? Heb je naast ontwikkelen ervaring met ontwerpen en verbeteren van Cobol omgevingen? Reageer dan snel! Ontwikkelen en onderhouden van de Cobol applicatie omgeving; Het ontwikkelen en bouwen van applicaties in een web-omgeving; Verbeteren van de efficiency en kwaliteit van de systemen; Achterhalen requirements; Je draagt zorg voor heldere systeemdocumentatie en instructies. Functie-eisen Een afgeronde HBO opleiding; Minimaal 3 - 5 jaar werkervaring met Cobol; Ervaring met IBS2000, IBM/Power7 en DDS zijn een pré; Je kan goed zelfstandig maar ook

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 »

Erv.Software Ontwikkelaar voor slimme oplossingen

Dutch is mandatory for this position. Ervaren Software Ontwikkelaar voor slimme oplossingen binnen de Transport & Logistiek (C#.NET/Azure/65K/R’dam) Jij gaat samen met collega’s (complexe) logistieke vraagstukken oppakken, met als doel slimme software oplossingen te bedenken en te ontwikkelen. Een maaltijd box leverancier van Nederland was op zoek naar een oplossing om hun logistieke processen te optimaliseren en de klantervaring te verbeteren. Hiervoor is een app gebouwd die het hele distributie proces inzichtelijk maakt van magazijn tot bezorger, en van klantenservice tot aan klant. Je kan zien waar welke bezorger zich bevind, maar ook welke tempratuur de producten op dat moment

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 »

Application Developer Tech Lead

We’re Hiring! A UPS Application Developer Tech Lead *REMOTE WORK POSSIBLE FOR THIS ROLE As a Tech Lead Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as

Bekijk vacature »

Senior C#.Net Developer - Logistieke (zeevaart) se

Voor een hechte, informele en jonge club gespecialiseerd in Transport Management Systemen voor de vracht en havensector zijn wij op zoek naar een Senior .Net C# Developer. Een goede, sociale communicator die samenwerking en passie voor het vak key vindt. En die durft te sparren, dromen en pionieren! Deze organisatie van 150 man (waarvan 9 IT-toppers) zorgen er al 30 jaar voor dat internationale transport tot in de details kunnen worden berekend, ingepland en gemanaged, bijvoorbeeld in de Rotterdamse haven. Hierdoor worden kosten, materialen, arbeid, ontwerpen en oplevering perfect en just-in-time op elkaar afgestemd. Ze zijn marktleider én pionier in

Bekijk vacature »

Database Developer

Bedrijfsomschrijving De organisatie is een gerenommeerde HR Cloud Solutions provider met miljoenen gebruikers. Hun platformen helpen klanten om Human Capital Management (HCM) ambities waar te maken en bieden payroll oplossingen voor de verloning van ongeveer 25% van alle Nederlandse werknemers. Als Database Developer kom je te werken binnen het Integratie API team. Binnen het domein is een Database opgezet volgens het EAV model, echter is het lastig om hier data uit te halen. Het doel van het team is dan ook, om efficiënt data uit de Database te halen en dit zo begrijpelijk mogelijk te presenteren aan de andere team.

Bekijk vacature »

Junior .Net Developer voor geautomatiseerde emailm

Onze klant is een Email Marketing Automation ontwikkelaar voor vele grote klanten in Nederland en België. Met hun marketingsoftware weten zij dagelijks miljoenen mensen te bereiken voor hun klanten. Als Junior .Net Developer van het jonge en informele Innovatie Team breng jij het platform naar een hoger niveau. Je bent hierbij als junior vanaf dag 1 volledig betrokken bij het team. Je bent betrokken de volledige software development life cycle en gaat dan ook mee naar de grote klanten. Terwijl je wordt ingewerkt en dagelijks spart met je 15 gezellige collega’s, werk je aan zowel de front-end als back-end van

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

Ozzie PHP

07/05/2014 20:56:33
Quote Anchor link
Heej,

Twee vraagjes...

1) Bij een psr-4 autoloader kun je een namespace en een directory toevoegen. Bijv. setNamespace('foo', 'path/to/foo'). Begrijp ik goed dat je aan een psr-0 autoloader alleen maar een pad toevoegt, zonder een namespace?

2) Stel een library laadt volgens het psr-0 autoloading principe, en de top-level namespace van die library is 'foo'. Kun je diezelfde library dan ook laden met een psr-4 autoloader, door dit te doen:
setNamespace('foo', 'path/to/foo') ?
 
PHP hulp

PHP hulp

12/04/2021 00:00:54
 
Dos Moonen

Dos Moonen

07/05/2014 22:06:20
Quote Anchor link
Voor zover ik het begrijp:

1) ja

2) ja
 
Ozzie PHP

Ozzie PHP

07/05/2014 22:08:52
Quote Anchor link
Oké, thanks Dos.
 
Wouter J

Wouter J

07/05/2014 22:36:26
Quote Anchor link
Er zit maar 1 verschil tussen PSR-0 en PSR-4: In PSR-4 wordt de namespace niet opgenomen in het path, in PSR-0 wel.

Dus stel we doen $aPsr0Autoloader->registerNamespace('Ozzie\\Cms', 'src/'); en vragen de Ozzie\Cms\Admin\AdminService interface op, dan wordt deze geladen uit src/Ozzie/Cms/Admin/AdminService.php

Als we echter $aPsr4Autoloader->registerNamespace('Ozzie\\Cms\\', 'src/'); doen dan wordt deze geladen uit src/Admin/AdminService.php.

Op deze manier kun je dus nutteloze mappen verwijderen, die alleen mappen hebben. Dan krijg je bijv. iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$psr4Autoloader
->registerNamespace(array(
    'Ozzie\\Cms' => 'vendor/ozzie-cms',
    'Ozzie\\Framework\\' => 'vendor/ozzie-framework',
));

?>

En dan kun je klassen als Ozzie\Cms\Admin\AdminService in vendor/ozzie-cms/Admin/AdminService.php vinden en Ozzie\Framework\Routing\Router in vendor/ozzie-framework/Routing/Router.php

Dus ja, deze configuratie is hetzelfde:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$psr0Autoloader
->registerNamespace('Ozzie\\Cms', 'vendor/ozzie-cms');
$psr4Autoloader->registerNamespace('Ozzie\\Cms\\', 'vendor/ozzie-cms/Ozzie/Cms');
?>


Merk overigens op dat PSR-4 een successor van PSR-0 is, het is een vervanger. PSR-0 is nu dus "deprecated".
Gewijzigd op 07/05/2014 22:37:25 door Wouter J
 
Ozzie PHP

Ozzie PHP

07/05/2014 22:46:36
Quote Anchor link
Thanks Wouter. Ik dacht dus eigenlijk dat je bij psr-0 enkel een path instelde, zonder nameaspace.

$prs0Autoloader->setPath('library');

En dat dan \foo\bar zou geladen worden worden via 'library/foo/bar.php' maar dat heb ik dus verkeerd begrepen.

>> Merk overigens op dat PSR-4 een successor van PSR-0 is, het is een vervanger. PSR-0 is nu dus "deprecated".

Oké... dus als er een library is die met PSR-0 werkt, dan kun je die gewoon prima autoloaden via een PSR-4 autoloader. Correct?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$psr0Autoloader
->registerNamespace('Ozzie\\Cms', 'vendor/ozzie-cms');
$psr4Autoloader->registerNamespace('Ozzie\\Cms\\', 'vendor/ozzie-cms/Ozzie/Cms');
?>

Waarom zet je bij de psr-4 autoloader een slach achter de namespace en bij de psr-0 autoloader niet?
 
Dos Moonen

Dos Moonen

07/05/2014 23:20:41
Quote Anchor link
Na PSR-0 en PSR-4 weer een keer doorgenomen te hebben:

"Er zit maar 1 verschil tussen PSR-0 en PSR-4: In PSR-4 wordt de namespace niet opgenomen in het path, in PSR-0 wel."
Er is nog een verschil:
- PSR-0 zegt "Each _ character in the CLASS NAME is converted to a DIRECTORY_SEPARATOR. The _ character has no special meaning in the namespace."
- PSR-4 zegt "Underscores have no special meaning in any portion of the fully qualified class name."

Hieruit volgt dat het antwoord op de vraag
"Oké... dus als er een library is die met PSR-0 werkt, dan kun je die gewoon prima autoloaden via een PSR-4 autoloader. Correct?"
nee is. Niet 100% van de gevallen in elk geval. Doe het dus ook niet.

PS. "In PSR-4 wordt de namespace prefix niet opgenomen in het path, in PSR-0 is er geen prefix die je weg kunt laten." misschien ietsjes duidelijker?
Gewijzigd op 07/05/2014 23:32:59 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

07/05/2014 23:34:29
Quote Anchor link
Ah oké. Er zit dus toch verschil tussen! Ik heb zelf een keer een psr-4 autoloader gemaakt, en daarin vervang ik de underscore in een classnaam door een slash. Dat klopt dus helemaal niet :-s
Maar wel vreemd... waarom heb ik dat dan ooit erin gebouwd vraag ik me af. Verkeerd gekeken bij de specs van psr-0? Vreemd...

>> PS. "In PSR-4 wordt de namespace prefix niet opgenomen in het path, in PSR-0 is er geen prefix die je weg kunt laten." misschien ietsjes duidelijker?

"In PSR-4 wordt de namespace prefix niet opgenomen in het path"

Dit is duidelijk.

"in PSR-0 is er geen prefix die je weg kunt laten."

Dit is me niet duidelijk. :-s
Heb je een voorbeeldje?
 
Dos Moonen

Dos Moonen

08/05/2014 08:44:40
Quote Anchor link
PSR-0:
Je geeft een path op.
De autoloader vervangt alle namespace separators en underscores in de class name door DIRECTORY_SEPARATOR.
Vervolgent plakt de autoloader het achter het path en probeert het dat .php bestand te laden.

PSR-4:
Je geeft een path en namespace prefix op.
De autoloader returned als de FQN niet begint met de namespace prefix.
De autoloader haalt de prefix van de FQN af.
De autoloader vervangt in het restant alle namespace separators door DIRECTORY_SEPARATOR.
Vervolgent plakt de autoloader het achter het path en probeert het dat .php bestand te laden.
Gewijzigd op 08/05/2014 09:23:11 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

08/05/2014 11:29:36
Quote Anchor link
Dos thanks, hoe jij het uitlegt zo begreep ik het ook, maar Wouter schrijft hierboven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$psr0Autoloader
->registerNamespace('Ozzie\\Cms', 'vendor/ozzie-cms');
?>

Wouter koppelt bij de PSR-0 autoloader wél een namespace aan het pad. Dat klopt dan dus niet?

>> De autoloader returned als de FQN niet begint met de namespace prefix.

Als ie niet returnet, maar simpelweg niks doet, dan is het toch ook goed? Komt op hetzelfde neer neem ik aan?
 
Dos Moonen

Dos Moonen

08/05/2014 13:33:38
Quote Anchor link
"Wouter koppelt bij de PSR-0 autoloader wél een namespace aan het pad. Dat klopt dan dus niet?"
Dan heeft hij toen hij dat schreef, net als ik toen mijn eerste post in dit topic schreef, PSR-0 en PSR-4 niet recent nog eens doorgenomen had.

"Als ie niet returnet, maar simpelweg niks doet, dan is het toch ook goed? Komt op hetzelfde neer neem ik aan?"
Ja, persoonlijk ben ik het liefst zo snel mogelijk uit een functie/methode. Maar er is ook de single point of exit gedachten gang die handig is bij talen waar je zelf memory management moet uitvoeren. PHP doet dat voor je, dus return ik het liefst zo snel mogelijk.
 
Ozzie PHP

Ozzie PHP

08/05/2014 13:39:03
Quote Anchor link
>> Ja, persoonlijk ben ik het liefst zo snel mogelijk uit een functie/methode.

Wat ik bedoel is... je kunt dit doen (wat jij waarschijnlijk doet)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if ($namespace_klopt_niet) {
  return;
}

// class laden
?>

Maar je kunt ook dit doen (zoals ik het doe)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ($namespace klopt) {
  // class laden
}
?>

Jij returnt dus als niet aan de voorwaarde wordt voldaan. Ik doe alleen iets als wél aan de voorwaarde wordt voldaan en return nooit iets. Vooral een kwestie van persoonlijke voorkeur?
 
Dos Moonen

Dos Moonen

08/05/2014 13:58:04
Quote Anchor link
"Vooral een kwestie van persoonlijke voorkeur?"
Ja.
 
Ozzie PHP

Ozzie PHP

08/05/2014 13:59:26
Quote Anchor link
Oké :-)

Toevoeging op 08/05/2014 14:30:21:

Toch nog even een vraag...

Je kan dan toch ook een psr-0 loader maken waar je wel een namespace aan kan toevoegen?

Dus stel je hebt een PDF library volgens psr-0. Dan zou (correct me if I'm wrong) toch iedere class-naam met dezelfde namespace moeten beginnen? Bijv. PDF? Dan zou ik toch ook een eigen psr-0 autoloader kunnen maken waarbij bijv. de top level namespace verwijst naar de library? Of werkt dat niet?
 



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.