request class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full stack .NET developer Microsoft 365

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Frontend Developer

Functieomschrijving Voor de NIPV zijn wij opzoek naar een Frontend Developer. Als Frontend Developer ga jij aan de slag om dashboards te bouwen vanuit het datawarehouse. Dit stelt NIPV in staat om snel en eenvoudig bij correcte bedrijfsvoeringsinformatie te kunnen. Je ontwikkelt dashboards in PowerBI, publiceert en onderhoud die, verzameld en verwerkt feedback in overleg met het ontwikkelteam. Naast dashboards ontwikkel en onderhoud je een datamodel in Excel waarmee adviseurs, controllers en analisten in staat worden gesteld om de gegevens uit de dashboards te raadplegen en anders te filteren of bepaalde gegevens nader te verfijnen, zodat verdiepende vragen kunnen worden

Bekijk vacature »

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

SAP ABAP Developer

Dit ga je doen Software ontwikkeling met behulp van o.a. ABAP, Sapscript en Smartforms Maatwerk development op SAP ECC 6.0, in de toekomst S/4 HANA Samenwerken met Business Analisten die functioneel en technisch ontwerpen aanleveren Testen van opgeleverde software Bugfixing Ondersteuning van eindgebruikers Hier ga je werken Onze klant, een internationaal gevestigd productiebedrijf dat mensen blij maakt, is ter versterking op zoek naar een ABAP Developer voor hun SAP team. Het team van 4 mensen verzorgt de ontwikkeling van maatwerk voor de SAP omgeving waar wordt gewerkt met modules SD, FI/CO, PM en MM. Momenteel draait het bedrijf op SAP

Bekijk vacature »

Low Code Developer voor o.a. overheidsprojecten!

Bedrijfsomschrijving Wil jij ook behoren tot de specialist in Low Code? Dan zou ik zeker aanraden om verder te lezen. Deze organisatie is ooit opgericht door twee studenten en is inmiddels uitgegroeid tot een serieuze werkgever met een groot aanzien op Low Code projecten. De sfeer is echter niet veranderd, er heerst een informele sfeer met een open deuren beleid, en hierin mag de eigen bar natuurlijk niet ontbreken. Momenteel maakt deze organisatie een flinke groei door en hier kan jij natuurlijk niet bij ontbreken. Daarom ben ik op zoek naar Low Code Developers met een degelijke technische achtergrond. Kennis

Bekijk vacature »

.NET Developer

Functie omschrijving .NET developer met ervaring gezocht! Voor een softwarebedrijf in de regio Veenendaal zijn wij op zoek naar een .NET developer met een aantal jaar ervaring. Jij bent zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Verder ben je bezig met nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en productspecialisten om zo mooie producten te creëren. Bedrijfsprofiel De organisatie waar je voor gaat werken is een snelgroeiende softwareleverancier en allround dienstverlener. Deze organisatie heeft zowel klanten die

Bekijk vacature »

Front-end developer

Functie Jij komt te werken in een team van 5 developers. het product is continue in beweging. Nieuwe en bestaande klanten vragen om vaak nieuwe features. Hierin ben jij zeer belangrijk om te zorgen dat de functionaliteiten goed opgezet worden op technisch vlak. Designs krijg je aangeleverd van een externe partij zodat jij je primair kan focussen op de techniek! Je hebt daarbij alle vrijheid om je eigen creativiteit toe te passen en mee te denken over de gebruikte technieken. Het gezamenlijke doel is een product dat functioneel zeer gebruiksvriendelijk is en het bedrijfsproces van de gebruikers versneld en kwalitatief

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer! 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? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Utrecht, die jou tot een volwaardig Fullstack Software Developer gaat opleiden. Binnen deze grote organisatie krijg je ruime en professionele trainingen die jouw in korte tijd vakbekwaam maken. Niet alleen het aan technisch aspect, maar ook zeker jouw persoonlijke ontwikkeling wordt veel

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

.NET developer

Functie Als .NET developer wordt jij onderdeel van ons ICT team. In dit multidisciplinaire team ben jij samen met onze senior .NET ontwikkelaar en medior .NET ontwikkelaar verantwoordelijk voor ons ERP systeem. In dit systeem (Navision) ga jij leren ontwikkelen. Wij bieden jou dan ook een gedegen opleiding aan, samen met de ondersteuning van onze Senior .NET developer. Daarnaast ga jij aan de slag met ons portaal geschreven in Sharepoint. Verder ben jij verantwoordelijk voor EDI verkeer en het ontwikkelen binnen het ERP systeem en andere toepassingen en rapportages. Van jou wordt verwacht dat jij het proces goed leert kennen

Bekijk vacature »

Back-end Programmeur

Functieomschrijving Heb jij kort geleden je HBO ICT in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een ambitieuze werkgever in de regio van Breda zijn wij op zoek naar een Back-end programmeur met affiniteit met C#.NET, SQL en MS Access. Samen met team bestaand uit ware ICT professionals ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Belangrijk is dat je kennis of ervaring hebt van C#.NET en SQL. Je toont een flexibele en sociale houding naar klanten toe. Je denkt in nieuwe mogelijkheden & gaat graag de uitdaging aan. Bedrijfsprofiel De

Bekijk vacature »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op de functionele aspecten, zodat

Bekijk vacature »

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

App Developer

Samen werken aan een gezonder Nederland en toekomstbestendige zorg voor iedereen. Dat is de impact die jij kan hebben als App Developer bij VGZ. Wil jij een bijdrage leveren aan een maatschappij waarin iedereen zich thuis voelt? Bekijk dan de vacature. Uit onderzoek van Computable is VGZ verkozen tot ‘beste niet-ICT werkgever voor ICT’ers van Nederland’ Hoe ook jij het verschil maakt Als App developer werk jij aan het belangrijkste communicatiekanaal van VGZ, namelijk de App! Als App developer bij VGZ maak je onderdeel uit van een van onze App-teams. Met een goede mix van kennis en ervaring zet je

Bekijk vacature »

Software Developer C# / ASP .Net

Functie omschrijving Ben jij een software ontwikkelaar die bekend is met termen ASP .NET, C# en SQL? Lees dan snel verder! Voor een bedrijf binnen de agrarische sector zijn wij namelijk op zoek naar een zelfstandige, enthousiaste en proactieve Software Developer die open staat voor een afwisselende functie met veel uitdaging. Binnen deze organisatie ben jij als Software Developer samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Hierbij draag jij bij aan de vertaling van klantwensen naar effectieve softwareoplossingen. Daarnaast ben je verantwoordelijk voor: Schatten

Bekijk vacature »

Pagina: « vorige 1 2 3 4 5 volgende »

Ozzie PHP

Ozzie PHP

04/01/2013 00:42:30
Quote Anchor link
Precies... maar het includen van een bestand is dan toch geen request?
 
PHP hulp

PHP hulp

19/05/2024 20:30:12
 
Eddy E

Eddy E

04/01/2013 08:47:52
Quote Anchor link
Het is maar net wat je onder een 'request' verstaat.
Als je een HTTP-request bedoeld (dus aantal bestanden downloaden voor bekijken website): nee.
Als je het als interne PHP-aanroep ziet wel.
 
Wouter J

Wouter J

04/01/2013 10:07:44
Quote Anchor link
Ozzie, het is niet het includen van een bestand het is het aanroepen van een compleet nieuwe controller...
 
Ozzie PHP

Ozzie PHP

04/01/2013 13:44:50
Quote Anchor link
"Ozzie, het is niet het includen van een bestand het is het aanroepen van een compleet nieuwe controller..."

Ja, snap ik... maar in jouw voorbeeld heeft dat toch geen toegevoegde waarde (omdat de action in dezelfde class staat)?

Ik bedoel met een request een http-request, ofwel een pagina-aanroep. Jij verstaat onder een request ook een interne (controller/method) aanroep. Daar zit 'm het verschil. Een request zoals ik het bedoel, daarvan kun je er maar een per pagina-aanroep hebben.
 
Wouter J

Wouter J

04/01/2013 13:51:49
Quote Anchor link
Om weer wat dichter bij elkaar te komen: Als jij het idee van een static en singleton class achterwege laat ben ik al tevreden, dan kun je later altijd nog van mening veranderen over wat wel en niet een request is.

Om meteen weer een ander onderwerp erin te gooien: Je moet nooit super globals gebruiken in je klasse. Wat je nu hebt is dus naar mijn mening fout. Gebruik de server array bij het aanmaken van de request klasse, niet in de request klasse.

Om het aanmaken van een request object dan wat te versimpelen zou je een factory kunnen maken, zie bijv. de symfony request klasse en zijn Request::createFromGlobals method.
 
Ozzie PHP

Ozzie PHP

04/01/2013 14:03:36
Quote Anchor link
Wouter, thanks voor je reactie. Waarom zou je een superglobal niet rechtstreeks in je class gebruiken?

Zou het dan bijv. beter zijn als ik in de construct van de request class zou zetten:

$this->server = $_SERVER;

en vervolgens overal die $this->server gebruiken?

Ik wil het allemaal ook niet te moeilijk maken, en vooral zo effectief mogelijk programmeren. Anders ben ik over 2 jaar nog bezig. Het gaat er mij vooral om dat de code logisch in elkaar zit en er geen "gevaar" in de code schuilt waardoor ik gehackt zou kunnen worden. Dat vind ik het meest belangrijk. De code moet voor mij vooral goed zijn, maar hoeft niet per se "mooi" te zijn. Vergelijk het met een auto. Je hebt hele mooie dure auto's die er supergelikt uitzien en waarbij ieder detail op de juiste plek zit. Zo hoeft mijn framework niet te zijn. Ik heb liever een goede middenklasser die me veilig van A naar B brengt. Mja, rare vergelijking, maar ik hoop dat je begrijpt wat ik bedoel.
 
Wouter J

Wouter J

04/01/2013 14:11:56
Quote Anchor link
Ja, alleen gebruik geen anti-patterns dat is het belangrijkste wat ik aan je wil meegeven.

Ozzie, omdat je dan als klasse dingen gaat gebruiken uit de buitenwereld, dat is ten strengste verboden. Iets in de constructor zetten is alsnog de server super global gebruiken. De basis is:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
class
class Request
{
    /**
     * @var array (of ParameterBag als je dat gebruikt)
     */

    private $server;

    /**
     * @param array $server The server details
     */

    public function __construct($server, ...)
    {

        $this->setServer($server);
    }


    /**
     * @return array // wordt dan ParameterBag als je dat gebruikt
     */

    public function getServer()
    {

        return $this->server;
    }


    private function setServer(array $server)
    {

        $this->server = $server; // eventueel een ParameterBag maken
    }
}


$request = new Request($_SERVER, ...);

// of, om het makkelijker te maken en niet telkens elke superglobal te moeten inserten
$request = Request::createFromGlobals();

class Request
{
    // ...

    public static createFromGlobals()
    {

        return new static($_SERVER);
    }
}

?>
 
Ozzie PHP

Ozzie PHP

04/01/2013 14:16:28
Quote Anchor link
Wouter, deze methode zie ik niet zitten, want dan moet ik telkens alles meegeven. Dat lijkt me niet gewenst:

$request = new Request($_SERVER, ...);

Ik snap alleen niet wat dit doet:

return new static($_SERVER);

??
 
Wouter J

Wouter J

04/01/2013 14:19:05
Quote Anchor link
Ozzie, als het goed is gebeurd het maar 2 keer ((1) bij de code voor het aanmaken van de request en (2) bij de code voor het aanmaken van een subrequest). En daarom gaf ik ook de 2e optie, daar doe je Request::createFromGlobals en je hebt een nieuwe request.

Quote:
Ik snap alleen niet wat dit doet:

return new static($_SERVER);

Die createFromGlobals method is een factory method, hij maakt het object aan en geeft hem terug. In dit geval maken we het object aan met de parameter $_SERVER, later krijg je nog meer parameters (alle $_* arrays).

Static verwijst naar de klasse waarin de static method leeft.
 
Ozzie PHP

Ozzie PHP

04/01/2013 14:26:56
Quote Anchor link
Wouter, thanks voor de uitleg maar ik snap het nog steeds niet helemaal. De 2e optie lijkt me sowieso handiger...

Ik zou dus op deze manier mijn request moeten ophalen...

$request = Request::createFromGlobals();

En in die functie staat dan bijvoorbeeld...

return new static($_SERVER, $_POST);

1) Wat zit er nu in de variabele $request?

2) Nu wil ik uit de server array de variabele HTTP_HOST hebben. Hoe doe ik dit dan?

Wat ik vooral niet snap is wat dit doet "return new static($_SERVER, $_POST)" en wat ik daar vervolgens mee moet doen.
 
Wouter J

Wouter J

04/01/2013 14:31:02
Quote Anchor link
Oké, we splitsen de hele regel op:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
return    Return het geen hierachter staat
new       maak een nieuw object aan
static    static verwijst naar het object waar we inzitten, Request in dit
          geval. Maak dus een nieuw request object aan
(         het begin van de parameters
$_SERVER, eerste parameter is de $_SERVER super global
$_POST    2e parameter is de $_POST super global
)         sluit de parameters
;         sluit de regel


Quote:
1) Wat zit er nu in de variabele $request?

Hetgeen geretourneerd wordt door Request::createFromGlobals(), een nieuwe request object dus, opgemaakt uit de super globals.

Quote:
2) Nu wil ik uit de server array de variabele HTTP_HOST hebben. Hoe doe ik dit dan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$request
= Request::createFromGlobals();

echo ($request->getServer())['HTTP_HOST'];
?>


Of als je een ParameterBag gebruikt, wat ik mooier vind:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// ...
echo $request->server->get('HTTP_HOST');
?>
 
Ozzie PHP

Ozzie PHP

04/01/2013 14:43:43
Quote Anchor link
Aha... er begint een lichtje te branden nu :-)

Oké.. weer een paar vragen...

1) Wat is nu precies het verschil van deze manier met "mijn" manier? En dan bedoel ik wat het verschil is met $_SERVER meegeven en $_SERVER rechtstreeks gebruiken. Is het op jouw manier zo dat de class property $server wel de inhoud van $_SERVER bevat, maar niet daadwerkelijk de $_SERVER array is? Je spreekt dus niet rechtstreeks de $_SERVER array aan? Klopt dit zoals ik het nu uitleg?

2) ($request->getServer())['HTTP_HOST'] Is dit PHP 5.4 schrijfwijze, waarbij je de key 'HTTP_HOST' ui de array opvraagt? Werkt het ook zonder haken, dus zo $request->getServer()['HTTP_HOST']. Ik zou het overigens dan liever zo doen: $request->getServer('HTTP_HOST'). Of gewoon $request->getHttpHost();

3) Dat ziet er mooi uit, maar hoe krijg je dat voor elkaar? ParameterBag zegt me (nog) niks.

Thanks alvast voor de antwoorden!
 
No One

No One

04/01/2013 15:01:00
Quote Anchor link
@Ozzie

vraag 2...nee dat is een algemene schrijfwijze..en zonder die haakjes gaat waarschijnlijk niet, omdat hij eerst de variabele moet returnen en dan pas de value van die key uit lezen..

vraag 3. heel simpel...impv een array retourneer je een object waar de $_SERVER variabele ingestopt is die heeft dan getters en setters.
 
Wouter J

Wouter J

04/01/2013 15:11:58
Quote Anchor link
1) Dat klopt, $server is een copy van $_SERVER. Dit betekend dat je $server kan aanpassen zonder $_SERVER aan te passen en dat de klasse dus niks weet van $_SERVER. Dit kan handig zijn in tests, waar je geen toegang hebt tot $_SERVER globals en dus gewoon een array met wat keys meegeeft.

2) Dat is inderdaad de PHP5.4 schrijfwijze waarbij je meteen een key van de array kunt ophalen zonder hem eerst in een variabele op te slaan. Dit werkt niet zonder haken.
$request->getServer('HTTP_HOST') ziet er leuk uit, maar ik zou dan de methodnaam veranderen naar getServerParameter en dan ga je eigenlijk al teveel weten in de Request klasse over die server parameter. De laatste methode ($request->getHttpHost()) is natuurlijk helemaal niet goed omdat HttpHost helemaal geen eigenschap (property) van Request is.

3) Een ParameterBag is gewoon een klasse. Voorbeeldje:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php

class ParameterBag extends \IteratorAggregate,
{

    /**
     * @var array
     */

    private $parameters;

    private $froozen = false;

    /**
     * @param array $parameters
     */

    public function __construct($parameters = array())
    {

        $this->setParameters($parameters);
    }


    public function set($id, $value)
    {

        if ($this->isFroozen()) {
            throw new \OverflowException('You cannot change a froozen parameterbag');
        }


        $this->parameters[$id] = $value;
    }


    public function get($id)
    {

        if (!$this->has($id)) {
            throw new \OutOfBoundsException(sprintf('The parameter "%s" is not found', $id));
        }


        return $this->parameters[$id];
    }


    public function has($id)
    {

        return array_key_exists($id, $this->getParameters());
    }


    /**
     * @return array
     */

    public function getParameters()
    {

        return $this->parameters;
    }


    public function freeze()
    {

        if ($this->isFroozen()) {
            throw new \BadMethodCallException('The parameterbag is already froozen');
        }


        $this->froozen = true;
    }


    public function isFroozen()
    {

        return $this->froozen;
    }


    /**
     * {@inheritDoc}
     */

    public function getIterator()
    {

        return new \ArrayIterator($this->getParameters());
    }


    /**
     * {@inheritDoc}
     */

    public function count()
    {

        return count($this->getParameters());
    }


    private function setParameters(array $parameters)
    {

        $this->parameters = $parameters;
    }
}

?>

De request klasse ziet er dan zo uit:
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
20
21
22
23
24
25
<?php
class Request
{
    /**
     * @var ParameterBag
     */

    public $server;

    /**
     * @param array $server
     */

    public function __construct($server = array(), ...)
    {

        $this->setServer($server);
    }


    // ...

    private function setServer(array $server)
    {

        $this->server = $s = new ParameterBag($server);
        $s->freeze();
    }
}

?>


In het gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$request
= new Request::createFromGlobals();

echo $request->server->get('HTTP_HOST');

$request->server->set('HTTP_HOST', 'foo'); // exception: "You cannot change a froozen parameterbag"
?>
 
Ozzie PHP

Ozzie PHP

04/01/2013 15:35:07
Quote Anchor link
:-/ Allememachies!

Ik wil het een beetje simpel houden hè Wouter :)
Nou, weer een paar vragen dan maar...

1) Eerder schreef je dit "return new static($_SERVER);". Is dat exact hetzelfde als dit "return new Request($_SERVER);"

2) In mijn huidige request class heb ik een functie die mij bijvoorbeeld het subdomein teruggeeft: $request->getSubdomain();

Hoe zou je dat dan in jouw voorbeeld implementeren? Wel gewoon in de request class een functie getSubdomain maken, maar dan in die functie gewoon de http_host opvragen via via $this->server->get('HTTP_HOST')?

3) Ik zie in het voorbeeld wat jij geeft allerlei typen Exceptions staan. Waarom gebruik je niet gewoon 1 (algemeen) type?

4) Het voorbeeld van die ParameterBag (waarom heet het zo?) komt dat uit Symfony, of is het iets wat je zelf hebt gemaakt?

5) Dit wordt een leuke... probeer mij nou eens 100% te overtuigen waarom ik van de Request class geen Singleton ga maken (het argument van Unit testing moet je even achterwege laten). Hoe ik het zie... stel ik heb straks in mijn framework op meerdere plekken het request object nodig. De gegevens uit $_SERVER, $_POST etc. zullen tijden een request niet veranderen. Stel ik heb het request op 10 plekken nodig. Als het geen Singleton is, dan moet ik 10x een object aanmaken, parameters instellen enz. Als ik een Singleton gebruik, roep ik telkens hetzelfde object aan. Ik verbruik geen extra geheugen en behaal performance winst omdat niet telkens alle parameters opnieuw hoeven te worden geset. Mij lijkt het dus (in dit specifieke geval!!!) een hele hoop voordelen bieden.
 
Wouter J

Wouter J

04/01/2013 16:02:49
Quote Anchor link
Is dit dan niet simpel (behalve misschien technieken die je onbekend voorkomen), een klasse van 90 regel en methoden van 1 tot 5 regels is nog niet zo moeilijk toch?

1) Ja, maar new static is wat dynamischer zodat als je de Request klasse gaat extenden in bijv. een JsonRequest klasse hij `return new JsonRequest($_SERVER)` doet.

2) Nee, een subdomein is geen eigenschap van de request, maar eentje van de SERVER headers. Wat je kan doen is deze als key toevoegen in de SERVER array (die in je klasse staat, niet de $_SERVER array)

3) Je moet zo precies mogelijk zijn met exceptions. Sommige wil je direct opvangen, andere laat je opborrelen tot het einde en nog andere vang je halverwege op. Tevens helpt dit je debug message, je kan dan precies zien wat er fout is gegaan aan de exception klasse en ook waar ong. (door bijv. exceptions in namespaces te zetten)

4) Het idee van ParameterBag komt uit de Symfony HttpFoundation Component (het geen waar Request en zijn factory ook vandaan komen), het idee van het bevriezen van een Registery komt uit de Symfony DependencyInjection Component. De code zelf heb ik zojuist gemaakt

5) Correct, behalve 1 heeeele grote fout en dat is dat je niet met singletons moet gaan werken om een klasse in een andere klasse te krijgen. Je moet dan werken met Dependency Injection. Je maakt 1 keer de request klasse aan, slaat die ergens op en gebruikt die telkens weer. Als we eens de Pimple Container van Fabien erbij pakken wordt het:
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
<?php
$container
= new Pimple();

$container['request.class'] = 'Request';
$container['request'] = $container->share(function ($c) {
    return $c['request.class']::createFromGlobals();
});


$container['foo.class'] = 'FooClass';
$container['foo'] = function ($c) {
    return new $c['foo.class']($c['request']); // voer het eerder aangemaakte Request object in
};

$container['bar.class'] = 'BarClass';
$container['bar'] = function ($c) {
    return new $c['bar.class']($c['request']); // we maken hem niet nogmaals aan, maar gebruiken de eerder aangemaakte Request
};
?>
 
Ozzie PHP

Ozzie PHP

04/01/2013 16:27:26
Quote Anchor link
Pfff... oké, dependency injection dus. Moet ik me daar weer even in gaan verdiepen. Het valt allemaal niet mee... thanks voor de voorbeelden. Ik ga er mee aan de slag. Eens even goed over nadenken hoe ik dit ga doen. Heb voorlopig weer wat te doen ;)

Toevoeging op 04/01/2013 16:48:19:

P.s. Is het dan wel handig om de constructor in de request class private te maken, zodat je altijd "verplicht" bent om de createfromglobals functie te gebruiken?
 
Wouter J

Wouter J

04/01/2013 17:25:48
Quote Anchor link
Quote:
Is het dan wel handig om de constructor in de request class private te maken, zodat je altijd "verplicht" bent om de createfromglobals functie te gebruiken?

Nee, want ik wil helemaal niet altijd createFromGlobals gebruiken.
 
Ozzie PHP

Ozzie PHP

04/01/2013 18:04:18
Quote Anchor link
Maar wat als ik dat nu wel wil :)))

(Wanneer zou je NIET createfromglobals willen gebruiken? Is toch makkelijker dan alles handmatig meegeven?)
 
Moose -

Moose -

04/01/2013 18:55:45
Quote Anchor link
Ozzie PHP op 04/01/2013 18:04:18:
Maar wat als ik dat nu wel wil :)))

(Wanneer zou je NIET createfromglobals willen gebruiken? Is toch makkelijker dan alles handmatig meegeven?)


Bijvoorbeeld bij het testen. Als je een GET, POST, PUT, DELETE request wil testen, is het handig dat je een setRequestMethod functie hebt
 

Pagina: « vorige 1 2 3 4 5 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.