mappen opsplitsen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

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 »

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 »

Low Code Developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten in heel het land! Wat ga je hier zoal doen? Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan

Bekijk vacature »

Front end developer

Functie Binnen de functie van Front-end developer werk je mee aan uitdagende klantprojecten. In teamverband werk je aan de voorkant van onze state-of-the-art portaal oplossingen en apps. Dit alles gebeurt in een multidisciplinaire omgeving waarbij je de ruimte hebt om te sparren, je ideeën scherp te stellen, en waar je met de benodigde kennis en ervaring om je heen altijd terecht kunt bij je collega’s voor vragen en ondersteuning. Meestal werk je vanuit ons kantoor maar we bieden ook alle faciliteiten om thuis te kunnen werken. Voor sommige projecten ga je mee naar de klant, wellicht zelfs in het buitenland!

Bekijk vacature »

.NET developer

Functie Heb jij veel kennis van ASP.NET Webforms en wil jij juist de overstap maken naar ASP.NET Core? Wij zijn per direct op zoek naar een ervaren .NET Webdeveloper die met ons samen ons platform wilt herschrijven van ASP.NET Webforms naar ASP.NET Core. Voor jou de unieke kans om met ons samen te innoveren en kennis op te doen van de nieuwste technieken binnen de Microsoft Stack. Wij hebben een development team met 10 IT specialisten bestaande uit onder andere 4 backend .NET developers en twee front-end developers. Wij zijn continu bezig om ons als team en bedrijf te blijven

Bekijk vacature »

PHP Laravel developer

Functie omschrijving Weet jij alles van Laravel en krijg je energie van het ontwikkelen van software hiermee? Laat snel wat van je horen want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch. Jouw taken zullen bestaan uit: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Documentatie schrijven over applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein softwarebedrijf. Er werken ongeveer 15 medewerkers, verdeeld in meerdere teams, zoals back-end en front-end development, projectmanagement

Bekijk vacature »

SQL ontwikkelaar

Functieomschrijving Voor een gave werkgever in regio Breda zijn wij per direct op zoek naar een SQL ontwikkelaar/ functioneel consultant. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Je test de ontwikkelde oplossingen om er zeker van te zijn dat deze voldoen aan de functionele specificaties en de behoeften van de organisatie; Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Je stelt op

Bekijk vacature »

Senior Full Stack developer

Bedrijfsomschrijving tbd Functieomschrijving Full Stack Java Development bij Randstad Groep Nederland (HQ) Er is een vacature in het Corporate Client Solutions (CCS) team. Dit team is met een ander team net begonnen aan het project ‘Grip op Inhuur’. Het doel van dit project is de tevredenheid van onze leveranciers te verhogen en de efficiëntie van onze administratie te verbeteren. Onderdeel daarvan is een ‘Mijn-omgeving’ voor ZZP’ers en leveranciers. Naast dit nieuwe project werkt het team ook aan het onderhoud en verbeteren van een digitaal vacature management systeem waarmee dagelijks vele vacatures worden voorzien. Het team ontwikkelt zo veel mogelijk zelf

Bekijk vacature »

Medior/Senior Python developer

Functie Jij als Senior Python developer hebt al ruime ervaring opgedaan. Bedrijven komen bij de organisatie om technische vraagstukken op te lossen. Jij als specialist bent dus de representatie van deze kwaliteit. Je zult de keuze krijgen tussen lange of korte projecten waarin je komt te werken in multidisciplinaire teams. Projecten die je gaat uitvoeren zijn zeer uitlopend. Zodoende kun je aan de ene kant kiezen voor een greenfield project en stroom je bij een ander project midden in een migratietraject in. Voor de ene klant ontwikkel je ene nieuwe portal en voor het andere project duik je veel meer

Bekijk vacature »

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer .NET, C# voor een gaaf bedrijf in de omgeving van Utrecht! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Lees dan snel verder! Voor een opdrachtgever in de omgeving van Utrecht, zijn wij op zoek naar een Junior Software Developer. Werk jij graag aan verschillende projecten en ga je graag klanten op bezoek? Dan is dit de ideale functie voor jou! Binnen deze functie

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 »

Senior Applicatie ontwikkelaar Java

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving We verwachten van je,

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

25/02/2014 00:42:42
Quote Anchor link
Ola,

Korte vraag. Ik zit me af te vragen... Stel ik heb 2 classes waarin ik de data van een request wil opslaan. In de ene class wil ik client data opslaan en in de andere server data. Voor welke mappenstructuur zouden jullie dan kiezen? A, B of C? (Ik snap dat er nog meer mogelijkheden zijn, maar ik zou graag weten welke van deze 3 jullie voorkeur heeft en waarom.)

A)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
/request/
         clientdata.php
         serverdata.php

Of voor deze manier:

B)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
/request/
        data/
             clientdata.php
             serverdata.php

Of...

C)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
/request/
        data/
             client/
                    data.php
             server/
                    data.php

Het gaat me er vooral om wanneer je überhaupt over moet gaan tot het aanmaken van nieuwe directories. Je kunt zeggen dat beide classes onderdeel van het request zijn, en ze dus gewoon in de request map zetten (A). Je kunt ook zeggen dat het fenomeen "data" weliswaar tot het request behoort, maar een apart onderdeel daarvan is (B). En je kunt vervolgens binnen die data ook weer aparte mappen maken omdat het om verschillende typen, client en server, data gaat (C). Ben benieuwd naar jullie reacties en vooral hoe jullie daar mee omgaan en waar jullie je keuzes op baseren.
Gewijzigd op 25/02/2014 01:05:50 door Ozzie PHP
 
PHP hulp

PHP hulp

27/11/2024 19:47:05
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 07:57:25
Quote Anchor link
Uiteindelijk verwerk je altijd data, dus ik zou het niveau /data/ er tussenuit halen.

Daarmee vallen variant B en C af. Variant A zou ik dan wel met andere hoofdletters gebruiken als namespace:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
/Request/
         ClientData.php
         ServerData.php

De eerste klasse /Request/ClientData.php wordt dan met dezelfde tenaamstelling:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
namespace Request;

class ClientData
{
    // ...
}
?>
 
Wouter J

Wouter J

25/02/2014 10:31:12
Quote Anchor link
Behalve dat ik zou aanraden om altijd een vendor naam in je namespace op de eerste plek te zetten.
 
Ozzie PHP

Ozzie PHP

25/02/2014 13:09:28
Quote Anchor link
Ward, kun je nog iets verder uitleggen wat je bedoelt met "Uiteindelijk verwerk je altijd data". Zelf zat ik zo te denken, "data" is een onderdeel van het request, dus ik zet alles wat met data te maken heeft in een aparte map. Ik stel deze vraag omdat ik mezelf in een situatie aan het manoeuvreren ben, waarbij ik ieder afzonderlijk onderdeeltje in een aparte map aan het zetten ben. Dit is ontstaan toen ik met exceptions ben gaan werken. Ik vind het prettig om met eigen exceptions te werken ipv de spl library exceptions. Iedere class die dan een exception kan gooien, die wil ik een eigen exception class geven, zodat ik specifiek per class kan kijken of er een exception wordt gegooid. Velen zullen dit wellicht niet prettig vinden, maar ik vind het een fijne manier van werken.

Stel je hebt een mapje met autoloaders, dan wil ik dus iedere autoloader een eigen map geven, dus zeg maar dit idee:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
/autoloader/
            autoloader.php // dit is de algemene systeem-autoloader
            psr/
               autoloader.php // een psr autoloader

Stel dat de psr autoloader een exception zou moeten gooien, dan gaat dat nu heel makkelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
/autoloader/
            autoloader.php // dit is de algemene systeem-autoloader
            psr/
               autoloader.php // een psr autoloader
               exception.php // een psr autoloader exception

Stel echter dat ik alles in één map zou zetten, dan zou je zoiets krijge:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
/autoloader/
            autoloader.php // dit is de algemene systeem-autoloader
            psrautoloader.php // een psr autoloader
            psrautoloaderexception.php // een psr autoloader exception

Om dit soort lange bestandsnamen te voorkomen leek het me dus een goed idee om met mappen te werken. Maar het probleem daarvan is weer dat je heel veel mappen krijgt, waar vaak maar één bestand in staat (omdat niet zo heel veel classes een exception hoeven te kunnen gooien).

Heb je misschien nog wat advies, of een soort algemene stelregels hoe ik hier het beste mee om kan gaan?

Wouter J op 25/02/2014 10:31:12:
Behalve dat ik zou aanraden om altijd een vendor naam in je namespace op de eerste plek te zetten.

Helemaal gelijk in. Voor het gemak heb ik die even weggelaten.
Gewijzigd op 25/02/2014 13:11:00 door Ozzie PHP
 
Wouter J

Wouter J

25/02/2014 13:20:42
Quote Anchor link
>> Helemaal gelijk in. Voor het gemak heb ik die even weggelaten.

Ik zou ook je vendor naam niet in je mappenstructuur opnemen, maar alleen in je namespace.

>> Heb je misschien nog wat advies, of een soort algemene stelregels hoe ik hier het beste mee om kan gaan?

Een interessant (en kort) artikel voor je: http://verraes.net/2011/10/code-folder-structure/
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 13:24:34
Quote Anchor link
Je schuift voortdurend "data" heen en weer. Een request bevat data, een response bevat data en zelfs elke property is een vorm van data. Data is in dit verband een overbodige toevoeging. En meer praktisch vind ik het overzichtelijker als je de term data reserveert voor databases en andere vormen van data-opslag.

Ik zou één Request-hoofdcontainer gebruiken en die uitgebreider splitsen. Jouw tweedeling client/server is te veel ingegeven door netwerktechnologie. Bij het programmeren heb je eerder afzonderlijke componenten nodig voor bijvoorbeeld de POST bij formulieren, een cookie en een sessie. En die hebben meestal zowel client- als serverdata. Die tweedeling werkt daarom niet goed, denk ik: er is zowel te weinig als te veel overlapping met andere objecten, waardoor verantwoordelijkheden verkeerd verdeeld worden.

PSR heeft een eigen \Psr namespace. Daar hoort dus ook een PSR-autoloader in.
 
Ozzie PHP

Ozzie PHP

25/02/2014 13:32:29
Quote Anchor link
>> Een interessant (en kort) artikel voor je: http://verraes.net/2011/10/code-folder-structure/

Thanks, dit gaat meer over welke onderdelen bij elkaar horen. Ik ben juist benieuw hoe je zo'n "onderdeel" of map op de beste manier kunt inrichten.

>> En meer praktisch vind ik het overzichtelijker als je de term data reserveert voor databases en andere vormen van data-opslag.

Ik snap wat je bedoelt, maar als ik het gewoon "client" zou noemen, dan lijkt het alsof het om de persoon "client" gaat, en niet om de data.

>> Bij het programmeren heb je eerder afzonderlijke componenten nodig voor bijvoorbeeld de POST bij formulieren, een cookie en een sessie.

Ben ik wel met je eens, maar is het nodig om voor cookie, files, get, post aparte classes te maken? Volgens mij zien die classes er toch allemaal hetzelfde uit? Ze moeten een get() en has() method hebben en dan ben je er al. In het kader van DRY (don't repeat yourself) is het toch niet goed om daar dan 4 classes voor te maken?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 13:50:08
Quote Anchor link
>> maar is het nodig om voor cookie, files, get, post aparte classes te maken? Volgens mij zien die classes er toch allemaal hetzelfde uit? Ze moeten een get() en has() method hebben en dan ben je er al. In het kader van DRY (don't repeat yourself) is het toch niet goed om daar dan 4 classes voor te maken?

Dan delen ze een get() en has() in een gemeenschappelijke RequestInterface of AbstractRequest, maar er is nog steeds een groot verschil tussen een $_POST en een $_COOKIE, zelfs al komen ze allemaal tegelijk binnen via één request. Met de methoden om iets uit $_POST te halen kun je geen fatsoenlijk cookie zetten.
 
Ozzie PHP

Ozzie PHP

25/02/2014 14:00:26
Quote Anchor link
Met de methoden om iets uit $_POST te halen kun je geen fatsoenlijk cookie zetten. Klopt, maar de vraag is dan of je een cookie moet setten in de request of in de response. Ik zou zeggen dat laatste.

Maar goed, eigenlijk ging mijn vraag daar dus niet echt over. Ik wil graag weten hoe ik het beste mijn mappenstructuur kan inregelen. Stel dat ik wel alles een eigen map geef, en dus voor een optie als deze zou kiezen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
/request/
        data/
             client/
                    data.php
             server/
                    data.php

Zitten daar dan nadelen aan? Wordt mijn systeem daar bijvoorbeeld trager door?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 14:22:55
Quote Anchor link
Het nadeel is vooral dat je dan geen overzichtelijke namespace hebt.

Als je het extreem snel wilt maken, laadt je PHP-opcode via één bestand per applicatie uit een RAM-cache. Maar hoe je de boel later compileert, staat los van hoe je het geheel eerst bouwt.
 
Ozzie PHP

Ozzie PHP

25/02/2014 14:35:43
Quote Anchor link
>> Het nadeel is vooral dat je dan geen overzichtelijke namespace hebt.

Sorry dat ik even een boel vraag, maar wat bedoel je hier meer? Voor de client data zou de namespace dan worden:

Vendor\Request\Data\Client

Wat vind je daar niet overzichtelijk aan?

Nogmaals, ik weet dus niet of mijn idee met mappen goed is, of beter kan. Dus vandaar dit topic. Ik hoop vooral op nieuwe ideeën te komen. Stel dat we bijv. ClientData.php wel in de request map zetten en we willen ook een bijbehorende exception, dan krijg je wel een hele lange bestandsnaam, terwijl ik juist dacht dat het idee van de namespaces (o.a.) was om niet van die lange bestandsnamen te krijgen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
/request/
         ClientDataException.php

Ik wil niet zeggen dat het niet kan, maar ik vraag me dus af of het een "beter" is dan het ander, en wanneer je nu wel of niet mappen moet gebruiken. Jouw eerdere opmerking over "PSR heeft een eigen \Psr namespace. Daar hoort dus ook een PSR-autoloader in." begrijp ik overigens niet. Het is gewoon een type autoloader die overweg kan met psr namespaces. Oh wacht, je bedoelt dat jij die autoloader niet in de "autoloader" map zou zetten, maar in een "psr" map?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 15:03:28
Quote Anchor link
Het kán zo wel, maar dan krijg je bijvoorbeeld een ander hoofdlettergebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
Vendor/
       Request/
               ClientData.php

Een PSR-autoloader is "van PSR" en hoort daarom in een eigen namespace:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
/Psr/
     Psr4AutoloaderClass.php

Kijk, zo zie je meteen wat je aan het doen bent. Dit is niet zomaar een autoloader, maar een PSR-autoloader. En niet een voor PSR-0, maar een die we hebben geleend uit PSR-4.

Vergelijkbare logica vind je in bijvoorbeeld PSR-3:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
Psr/
    Log/
        AbstractLogger.php
        InvalidArgumentException.php
        LoggerAwareInterface.php
        LoggerAwareTrait.php
        LoggerInterface.php
        LoggerTrait.php
        NullLogger.php
        LogLevel.php

Daarom zou ik bij jouw voorbeeld ook zoiets verwachten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
Vendor/
       Request/
               AbstractRequest.php
               ClientData.php
               RequestInterface.php
               ServerData.php
 
Ozzie PHP

Ozzie PHP

25/02/2014 15:14:28
Quote Anchor link
>> En niet een voor PSR-0, maar een die we hebben geleend uit PSR-4.

Wat is het verschil tussen de 0 versie en de 4 versie?

>> Een PSR-autoloader is "van PSR" en hoort daarom in een eigen namespace

Is dit jouw eigen mening.. vind jij dat het zo hoort, of zijn daar "regels" voor? Ik zou zelf een (psr)autoloader namelijk eerder zoeken in mijn autoloader map, dan in een aparte psr namespace. En als ik een psr logger zou hebben, dan zou ik die ook eerder zoeken in mijn logger map. Is dat dan fout? Ik snap jouw redenatie ook, maar "mijn" manier kan toch ook?

>> Daarom zou ik bij jouw voorbeeld ook zoiets verwachten:

Ah oké, duidelijk. Ik ben zelf niet zo'n heel erg voorstander van hoofdletters in map- en bestandsnamen. Ik zat net even te experimenteren, en het gebruik van underscores vind ik eigenlijk ook wel heel duidelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
vendor/
       request/
               abstract_request.php
               client_data.php
               request_interface.php
               server_data.php
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 15:23:04
Quote Anchor link
>> Is dit jouw eigen mening.. vind jij dat het zo hoort, of zijn daar "regels" voor?

Dat is een kip-en-ei-probleem: het zijn de richtlijnen uit PSR-0 en PSR-4, dus als je de PSR-standaarden wilt aanhouden, moet je de PSR-standaarden aanhouden :-)

>> Wat is het verschil tussen de 0 versie en de 4 versie?

PSR-4 is aan aanvulling op andere autoloading-specificaties, waaronder PSR-0. Daarnaast beschrijft PSR-4 wáár je bestanden moet opslaan (PSR-0 niet) en is het daarmee een antwoord op je vraag.
 
Ozzie PHP

Ozzie PHP

25/02/2014 15:31:47
Quote Anchor link
>> PSR-4 is aan aanvulling op andere autoloading-specificaties, waaronder PSR-0. Daarnaast beschrijft PSR-4 wáár je bestanden moet opslaan (PSR-0 niet) en is het daarmee een antwoord op je vraag.

In mijn psr autoloader kan ik zeggen dat de namespace "Foo" moet worden gezocht in de map "bar", dus new Foo\FooBar verwijst dan naar /bar/foobar.php. Is dat dan psr-4?

>> Dat is een kip-en-ei-probleem: het zijn de richtlijnen uit PSR-0 en PSR-4, dus als je de PSR-standaarden wilt aanhouden, moet je de PSR-standaarden aanhouden :-)

Haha, ja ik hou de richtlijnen ook aan, maar ik bedoel... is het jouw eigen mening dat een psr autoloader thuishoort in een psr mapje? Je zou ook kunnen zeggen, het is een autoloader van het "type" psr en ik stop 'm gewoon in de autoloader map.

Als ik dus bijv. gebruik wil maken van een psr autoloader of logger, dan zou ik zeggen:
$autoloader = new Ozzie\Autoloader\PsrAutoloader;
$logger = new Ozzie\Logger\PsrLogger;
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 15:49:21
Quote Anchor link
>> is het jouw eigen mening dat een psr autoloader thuishoort in een psr mapje? Je zou ook kunnen zeggen, het is een autoloader van het "type" psr en ik stop 'm gewoon in de autoloader map.

Eerlijk gezegd, smokkel ik wel eens. Ik heb bijvoorbeeld een PSR-0-autoloader (geen class maar een functie) in de library staan, dus op het niveau /lib/ bóven alle vendor-mappen /lib/Psr/ en /lib/Google/ enzovoort.

Verder smokkel ik ook wel eens door binnen een package op het niveau /Vendor/Package/ een config.php met een doodgewoon rijtje require-statements op te nemen. Niet netjes, maar soms is require 'config.php' wel praktisch als je toch uitsluitend iets uit één package nodig hebt.

Verder houd ik er niet zo van om rigide alles met alleen een beginhoofdletter te schrijven, bijvoorbeeld Ideal en Postnl in plaats van iDEAL en PostNL.
 
Ozzie PHP

Ozzie PHP

25/02/2014 15:58:37
Quote Anchor link
>> Verder houd ik er niet zo van om rigide alles met alleen een beginhoofdletter te schrijven, bijvoorbeeld Ideal en Postnl in plaats van iDEAL en PostNL.

Ik denk dat ik alles met kleine letters ga schrijven.. tenzij het een externe library is, maar voor de rest, alles voortaan met kleine letters. Hoef ik er nooit meer over na te denken, en kan ik me ook nooit meer vergissen. Ideal, of was het nu iDEAL of IDEAL? Gewoon ideal :)

Wat betreft het psr gebeuren. Dat zijn toch gewoon richtlijnen hoe je iets kunt aanpakken? Het is toch geen library?

Weet je nog het antwoord op mijn vorige vraag?

"In mijn psr autoloader kan ik zeggen dat de namespace "Foo" moet worden gezocht in de map "bar", dus new Foo\FooBar verwijst dan naar /bar/foobar.php. Is dat dan psr-4?"
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 16:10:10
Quote Anchor link
Ja, dat is PSR-4. In de voorbeelden bij PSR-4 vind je een methode addNamespace() die een $prefix voor de namespace accepteert.
 
Ozzie PHP

Ozzie PHP

25/02/2014 16:13:46
Quote Anchor link
Ah oké, zo'n method heb ik inderdaad zelf ook in mijn class gemaakt.

Maar dat psr gebeuren is toch geen library? Het zijn toch enkel richtlijnen hoe je iets op een handige manier kunt aanpakken?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2014 16:19:29
Quote Anchor link
PSR draait nu inderdaad vooral nog om API's, dus de interfaces waarmee je uiteenlopende PHP-projecten aan elkaar kunt koppelen. Daar begint standaardiseren immers mee: de interne werking van een klasse is niet interessant, zolang de interface maar is gestandaardiseerd.

In de PSR-recommendations vind je echter wel bruikbare klassen. Officieel zijn dat vaak maar voorbeelden, maar ze zijn goed te gebruiken als library.
 
Ozzie PHP

Ozzie PHP

25/02/2014 16:25:32
Quote Anchor link
Maar het is toch niet zo dat bijv. een externe library een psr "library" nodig heeft om te kunnen werken? Een externe library kan bijv. een autoloader nodig hebben "op basis van de psr" richtlijnen, maar dat is het toch wel?

Even nog terugkomend op de request map...

Jij gaf dus dit voorbeeldje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
Vendor/
       Request/
               AbstractRequest.php
               ClientData.php
               RequestInterface.php
               ServerData.php

Alle bestanden staan nu in de request map. Ik ben benieuwd of jij een voorbeeld kan geven wanneer je gebruik zou maken van een of meerdere submappen. Dus je hebt zeg maar eerst de vendor, en dan de hoofdmap. In die hoofdmap (in dit geval "request") staan nu alle bestanden, maar zijn er ook situaties waarin je een hoofdmap hebt, waar ook submappen in staan?
 

Pagina: 1 2 volgende »



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.