autoloading psr-0 psr-4

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C#.NET ontwikkelaar

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een C#.NET ontwikkelaar. Je bent verantwoordelijk voor het ontwikkelen van dashboards, webapplicaties en apps voor de eigen IOT-oplossingen. Samen met een vooruitstrevend team van ontwikkelaars en engineers krijgen jullie de opdracht om de sensoren in de apparatuur te scannen en vervolgens de data om te zetten in belangrijke inzichten voor de klanten. Taken en verantwoordelijkheden: Heb jij ideeën over nieuwe technieken die jullie kunnen implementeren? Hier wordt echt naar je geluisterd en gekeken of jouw idee daadwerkelijk ingezet kan worden; Je gaat aan de slag met de

Bekijk vacature »

Front-end Developer (HTML/CSS, Angular/React/Vue,

Functie Je zal aan de slag gaan in een klein, hecht team met front-end development experts die de ambitie delen mooi werk te leveren. Samen met hen zal je werken aan het gebruiksvriendelijk en interactief maken van complexe webapplicaties, websites en mobile apps. Je levert klanten wat ze nodig hebben terwijl je actief aan jezelf blijft werken met de ondersteuning vanuit je werkplek. Talen als Javascript programmeer jij vloeiend en je hebt kennis van frameworks als React en Angular. Je zou je het liefst nog veel meer ontwikkelen in verschillende front-end talen. Deze kennis deel je graag met je collega’s,

Bekijk vacature »

Junior Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Samenwerken in een team van 10 collega's; Opleveren van mooie eindproducten, middels de Agile methodiek; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als startende IT-professional kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven.

Bekijk vacature »

Laravel Developer

Functie omschrijving Voor een gave organisatie in de buurt van Den Bosch zoek ik een PHP developer. Het is van belang dat je kennis/ervaring hebt met het framework Laravel. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Andere taken zijn onder andere: documentatie schrijven over applicaties/uitleg geven over software en applicaties/ klantcontact over bestaande applicaties/applicaties optimaliseren. Bedrijfsprofiel Deze organisatie zit in de regio van Den Bosch en is een klein bedrijf. Er werken circa

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in een ontwikkelteam met 7 .NET developers. In ons team werken er drie senior .NET developer, twee medior .NET developers en twee junior .NET developers. Er is dan ook genoeg senioriteit in ons team om jou te kunnen bieden wat jij nodig hebt! Wij werken in scrum en hebben drie wekelijkste sprints. Daarnaast doen wij minimaal vier keer per jaar een release. Ons platform is ontzettend complex en groot. Het is dan ook in het begin belangrijk dat jij de processen gaat begrijpen. Jij krijgt dan ook een cursus om beter te begrijpen

Bekijk vacature »

SQL Developer

Functie omschrijving We are looking for a dutch native speaker Jij gaat in deze functie aan de slag met uitdagende projecten en het creëren van maatwerk software, vooral middels SQL. Iedere klant/project is weer anders, maar dat maakt dit bedrijf en de functie erg uniek & uitdagend. Verder heb je de volgende taken: Ontwikkelen en ontwerpen van SQL databases. T-SQL wordt hierbij gebruikt als programmeer laag; Optimalisatie van query's, voor een verbeterde efficiency; Begeleiden van junior developers, mits je dit leuk vindt; Heb je meer interesse in een rol als consultant, dan is dit ook mogelijk. Je heb hier meer

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Front-end Developer Angular

Dit ga je doen Jouw taken als Front End Developer bestaan uit: Het ontwikkelen van maatwerkoplossingen voor klanten; Het meedenken over nieuwe tools en technieken; Het begeleiden van junioren; Het meewerken aan diverse projecten; Het meedenken in UX/UI design. Hier ga je werken Als Front-End Developer ga je in een Scrum team aan de slag met de nieuwste digitale technologieën om klanten en overheden over de hele wereld te ondersteunen met het ondersteunen van hun software, veelal op het gebied van watermanagement en infra. Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning

Bekijk vacature »

Junior / Medior C# .NET ontwikkelaar in Brabants t

Bedrijfsomschrijving Ben jij een gepassioneerde C# .NET ontwikkelaar met een voorliefde voor hardware? Dan is dit de perfecte kans voor jou! Bij ons bedrijf krijg je de kans om deel uit te maken van een team van sociale en enthousiaste techneuten die er elke dag naar streven om onze eigen ontwikkelde software nog beter te maken. Het team van ongeveer 10 team medewerkers maakt zich hard om de interne processen gestroomlijnd te laten verlopen. Functieomschrijving Als lid van ons hechte en behulpzame team word je betrokken bij diverse projecten. Daarbij krijg je te maken met data-analyses, content en de logistieke

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Wij zijn voor een leuke opdrachtgever in omgeving Naaldwijk op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Wij zoeken iemand die breed inzetbaar is en die aan veel verschillende applicaties wilt werken. Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind

Bekijk vacature »

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Medior C# Developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Wat doe je als Medior C# Developer bij Coolblue? Als C# developer doe je regelmatig mee aan brainstormsessies over user experience, data en task flow met de UX Designer, Product Owner en Data Scientist in je team. Daarnaast schrijf je op zichzelf staande, consistente en testbare code die goed onderhoudbaar en toekomstbestendig is. Ook C# Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of AWS. Problemen oplossen

Bekijk vacature »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

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

27/05/2026 04:56:20
 
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.