autoloading psr-0 psr-4

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

Bekijk vacature »

Programmeur / Developer

Voor een familiebedrijf in Doetinchem, actief in de machinebouw voor de food-sector, zijn wij op zoek naar een programmeur / developer. In deze functie ben je werkzaam in een team van 5 medewerkers. Je werkzaamheden bestaan onder andere uit het verhelderen van requirements vanuit de opdrachtgever, de klant en de afdeling ontwikkeling. Je verricht haalbaarheidsstudies en werkt specificaties uit die je afstemt met de opdrachtgever. Je ontwerpt design in software en stemt af met je collega's. De huidige vision-systemen zijn geschreven in C software, welke draait op een CUDA platform. Je schrijft en codeert software en zal gaan testdraaien. Tot

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »

Ervaren Full stack developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house functie bij een bedrijf met enorme groeipotentie? Ben jij op zoek naar een nieuwe uitdaging vol afwisseling en gezelligheid? Dan ben je bij dit bedrijf aan het juiste adres! Wij zijn in omgeving Breda op zoek naar een ervaren full stack developer. Je gaat werken voor een zeer gewilde werkgever met goede arbeidsvoorwaarden. Je krijgt een plekje in het jonge IT team, work hard, play hard is hier duidelijk het motto! Jouw werkzaamheden zien er als volgt uit: Jij bent verantwoordelijk voor het ontwerpen en bouwen van webapplicaties. Je bent

Bekijk vacature »

Web Application Developer

Dit ga je doen Samen met het team werk je aan de visualisatie functionaliteiten en hoe dit gebruikt kan worden in een operationele setting; Het ontwerpen, ontwikkelen, onderhouden en leveren van support betreft het Warehouse Management Systeem en de bijbehorende web visualisaties; Je gebruikt hierbijde tools WebGL en ASP.net; Het meewerken in implementatieprojecten; Het leveren van Go-Live Support; Sparren met jouw Amerikaanse collega's. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Web Application Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

Backend developer

Functie omschrijving Ben jij graag bezig met de back-end van applicaties? Zou je dit graag willen doen voor een kleine werkgever waar ook tijd is voor een drankje op zijn tijd? Je taken hierbij zullen bestaan uit: Gebruik maken van de volgende technieken: .NET (core), C#, SQL, XML, MVC, JSON, REST & SOAP API. Gebruik maken van de volgende tools: Visual Studio, GIT, Jira, Jenkins. Bovengenoemde technieken en tools ga je gebruiken om: Nieuwe functionaliteiten te ontwikkelen. Wijzigingsverzoeken van klanten uitvoeren. Verzorgen van koppelingen tussen data. Bedrijfsprofiel Jouw nieuwe werkgever bevindt zich in regio Raamdonksveer en bieden oplossingen op gebied

Bekijk vacature »

Software Programmeur PHP

Functie Ben jij op zoek naar een nieuwe uitdaging als PHP developer en zoek je een leuke platte organisatie? Lees dan snel verder! Voor een opdrachtgever in omgeving Capelle aan den IJssel dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

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 »

Junior .NET Software Developer

Dit ga je doen Software development met behulp van C# .NET en / of PHP, je mag zelf kiezen waar jij je in wil specialiseren Meedenken over het nieuwe pakket, waar moet het aan voldoen? Unit-, integratie- en diverse andere tests schrijven en uitvoeren Nauw samenwerken met je IT collega's zoals Testers, Developers, DevOps Specialisten en Architecten Jezelf ontwikkelen met behulp van trainingen en cursussen Hier ga je werken Onze klant, een grote speler in de medische sector, is op zoek naar een enthousiaste junior (of meer ervaren) Software Developer die klaar is voor een nieuwe stap in zijn of

Bekijk vacature »

Database ontwikkelaar

Functieomschrijving Wil jij aan gave logistieke softwareprojecten werken en bij een uniek softwarebedrijf in de regio van Tilburg? Wacht niet langer en reageer snel op deze vacature. Als Database ontwikkelaar ga je aan de slag het schrijven van stored procedures en verder uitbouwen van de SQL database. Je werkt in een database team, met allemaal mensen die energie krijgen van software en techniek. Verder krijg je als taak: Optimaliseren en uitbouwen van de MS SQL databases die gebruikt worden; Optimaliseren van query's, waardoor er efficiënter gewerkt kan worden; Je werkt met de technieken T-SQL of PL/SQL; Bij interesse kan je

Bekijk vacature »

Software Developer

Dit ga je doen Ontwerpen, ontwikkelen en onderhouden van (mobiele) internettoepassingen; Ontwikkelen en onderhouden van Microservices; Ontwerpen en optimaliseren van databases; Identificeren van nieuwe trends/ontwikkelingen binnen de branche. Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt zich op het leveren van kwalitatief hoogwaardige producten aan alle hun klanten. De organisatie telt circa 4.000 medewerkers in meer dan 10 verschillende landen. Momenteel is de organisatie op zoek naar een Software Developer wilt meewerken aan het

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 »

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

25/12/2024 02:25:22
 
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.