arrayParser (?)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# Developer

De uitgebreide versie Jij hebt ruim twee jaar ervaring als developer. Nu wil je graag je tanden zetten in nog complexere projecten. Samen met je team bereik je nieuwe hoogtes en zelfstandig maak je meters. Je hebt behoefte aan collegae die jou alles leren op het gebied van technologie maar wilt tegelijkertijd ook graag je eigen opgedane kennis delen. Alles wat vandaag nog onbekend is, moet je morgen toepassen in de volgende uitdaging en dàt is wat jou scherp houdt. Je hebt geen zin in een 60-urige werkweek maar haalt wel plezier uit zo nu en dan een technische meeting,

Bekijk vacature »

Allround Business Analyst BI

Dümmen Orange is ’s werelds grootste veredelaar en kweker van snijbloemen, bollen, tropische planten, potplanten, perkplanten en vaste planten. Voor onze locatie in De Lier zoeken wij een Allround Business Analist BI. Functie inhoud De BI Omgeving is voor Dümmen Orange van essentieel belang en levert het totaalbeeld over de diverse entiteiten en applicaties. Door zowel acquisities en interne ontwikkelingen wijzigt het interne applicatielandschap regelmatig. Dit heeft direct impact op onze datawarehouse en ook de informatie behoefte waar BI in voorziet waardoor deze continu in beweging is. Als allround business analist BI word je de team-lead van het BI team

Bekijk vacature »

SAS Administrator

SAS Administrator - Smart Logistics Wil jij als SAS Administrator de digitale wereld van Smart Logistics verkennen? En als onderdeel van een professioneel team onze klanten helpen met (advanced) data analytics? Help jij onze klanten aan een goed functionerende SAS omgeving die in het geval van issues de impact van verstoringen zo laag mogelijk houdt? Wat ga je doen? Als SAS Administrator binnen de unit Smart Logistics krijg je de kans om je in de praktijk en in een dynamische omgeving verder te ontwikkelen en te specialiseren en stap voor stap inzicht krijgen in wat de technische vraagstukken zijn die

Bekijk vacature »

SAP Fiori Developer / Junior / Internationaal / 1

Functieomschrijving Ga jij als SAP Fiori Developer aan de slag voor een internationaal bedrijf in Nederland met meer dan 1 miljoen klanten? Dit bedrijf heeft IT hoog in het vaandel staan en investeert er daarom fors in. Voor het SAP Fiori team binnen deze organisatie zijn zij dan ook op zoek naar een Junior SAP Fiori Developer Werken als SAP Fiori Developer binnen een multifunctioneel Scrum team; Het bouwen en beheren van nieuwe functionaliteiten en interfaces in SAP Fiori op basis van de door jou opgehaalde requirements; Naast het developen heb je ook veel contact met de business; Je zorgt

Bekijk vacature »

.NET Developer

.NET Developer De uitgebreide versie Jij hebt ruim twee jaar ervaring als developer. Nu wil je graag je tanden zetten in nog complexere projecten. Samen met je team bereik je nieuwe hoogtes en zelfstandig maak je meters. Je hebt behoefte aan collegae die jou alles leren op het gebied van technologie maar wilt tegelijkertijd ook graag je eigen opgedane kennis delen. Alles wat vandaag nog onbekend is, moet je morgen toepassen in de volgende uitdaging en dàt is wat jou scherp houdt. Je hebt geen zin in een 60-urige werkweek maar haalt wel plezier uit zo nu en dan een

Bekijk vacature »

Senior Java Developer Role in Amsterdam

ORANGE QUARTER ARE CURRENTLY WORKING WITH ONE OF AMSTERDAM’S MOST INNOVATIVE TECH CONSULTANCIES WORKING ACROSS THE HEALTHCARE, BANKING, IOT AND MOBILE SECTORS. THEY PROVIDE INNOVATIVE SOFTWARE SOLUTIONS USING JAVA TECHNOLOGIES ACROSS THESE SECTORS AND ARE LOOKING FOR A SENIOR JAVA DEVELOPER TO JOIN THEIR TEAM AND IMPACT THESE CHALLENGING AND EXCITING PROJECTS. WHAT TO EXPECT: QUALITY IS ALWAYS FIRST WITH THIS COMPANY AND THEY DO NOT OPERATE WITHIN THE USUAL TRADE-OFFS ASSOCIATED WITH CONSULTANCY WORK. YOU’LL BE WORKING ALONGSIDE SENIOR ENGINEERS ONLY IN CROSS-FUNCTIONAL SCRUM TEAMS MADE UP OF FRONT-END, BACK-END AND QA AND DEVOPS ENGINEERS. ALONG WITH SPENDING EVERY

Bekijk vacature »

Senior Software Engineer

Wil jij als Java Software Engineer jouw ervaring inzetten voor missie kritische software in het OV? Wil jij jezelf verder ontwikkelen als software engineer en in een dynamisch team de kans krijgen om nieuwe technieken te introduceren? Senior Software Engineer - Public Transport Wat ga je doen? Zelfstandig en in teamverband bedenk je oplossingen, ontwikkel je software en test je deze ook. Hiermee boek jij succes. Mede dankzij jouw drang om altijd te blijven verbeteren en doorzettingsvermogen ben jij van onschatbare waarde bij het: Vertalen van gebruikerswensen en non-functionalrequirements naar werkende software. Denk hierbij aan het bedenken, opstellen en toetsen

Bekijk vacature »

Senior Front-end Developer vacature

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Ben jij de Front-end Developer die we zoeken? Je bent creatief, thuis in gebruikersinteractie en een gedreven engineer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Wat doe je als Developer? Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als binnen het Center of Excellence van Sogeti. Jij houdt van het uitdenken en

Bekijk vacature »

Pega Developer

BPM Company is vanwege groei op zoek naar Pega Developers. Wij zijn in 2011 opgericht en gespecialiseerd in Business Process Management. BPM Company is partner van Pegasystems & Mendix en werkt o.a. voor bedrijven als Rabobank, Transavia en De Mandemakers Groep. Als Pega Developer werk je op het snijvlak van techniek en consultancy en ben je bezig met het bouwen en implementeren van software met het BPM platform van Pegasystems. Je hebt een passie voor bedrijfsprocessen, werkt op locatie van de klant en bent tevens “trusted advisor” voor de klant. De eerste 2 maanden staan in het teken van opleiding.

Bekijk vacature »

Sitecore Developer/ .Net Developer/ Web developmen

Functieomschrijving Ben jij een developer die graag werkt aan een cruciaal platform? Schroom jij het niet om jouw brede skillset in te zetten om verbeterslagen aan te dragen en uit te voeren? Lees dan snel verder! Bouwen van nieuwe functionaliteiten (40%) Door ontwikkelen van het complexe consumenten platform (25%) Bugfixing (20%) Testen van (jouw) code, handmatig-, unit-, integratie- en browser tests (15%) Functie-eisen Minimaal een MBO-diploma met HBO werk- en denk niveau; Minimaal 3 a 5 ervaring als .NET developer; Ervaring met C# en ASP.NET ; Ervaring met webapplicaties; Ervaring binnen een SCRUM/Agile omgeving; Inzicht in Front-end technieken en hoe

Bekijk vacature »

C# / .NET Developer / SiteCore

Functieomschrijving Ben jij een Developer met kennis van C# / .NET en wil jij je graag specialiseren op het gebied van Sitecore? Wil jij daarnaast werken aan uitdagende Inhouse projecten voor grote en bekende partijen in Nederland? Dan is dit de rol waarnaar jij op zoek bent! Binnen deze rol zal jij je als C# / .NET Developer (met de focus op SiteCore) aan de slag gaan voor een van de meest bekende bureaus op het gebied online platformen, een rol met veel afwisseling en voldoende technische uitdaging! Werken aan diverse en uiteenlopende projecten, waarbij je meer dan eens pionierswerk

Bekijk vacature »

PHP developer gezocht - onderzoek applicatie

Functieomschrijving Je gaat verder ontwikkelen aan de bestaande applicatie en hier nieuwe functionaliteiten op bedenken. Omdat jij verantwoordelijk bent voor de applicatie krijg je hierin ook veel vrijheid. De collega's zijn jonge mensen in de leeftijd van 20 tot ongeveer 40 jaar en er heerst een hele ongedwongen sfeer in het bedrijf. Je mag straks 2 dagen remote vanuit huis werken als je dat zou willen. In overleg is er veel mogelijk bij dit bedrijf. We zoeken iemand met bij voorkeur 2 a 3 jaar ervaring op medior niveau. Heb jij zin om bij een leuk bedrijf verder te ontwikkelen

Bekijk vacature »

Senior Front-end Developer vacature

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Ben jij de Front-end Developer die we zoeken? Je bent creatief, thuis in gebruikersinteractie en een gedreven engineer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Wat doe je als Developer? Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als binnen het Center of Excellence van Sogeti. Jij houdt van het uitdenken en

Bekijk vacature »

Technical Support

Technical Support Location Ridderkerk (Zuid Holland) We are looking for a Technical support for Desktop 3D printing and Industrial Additive Manufacturing devices. You will troubleshoot our 3D printers at remotely and perform repairs on site, beside this you are also a competent and reliable partner for our customers when you provide system introduction and customer basic trainings. Along with your communicative personality, which enables you to deal with our customers in a confident manner, you have a proactive and structured approach and the ability to keep a cool head even in critical phases. Main Tasks Maintenance and repair of printers

Bekijk vacature »

.Net custom software developer

Jouw uitdaging als .Net developer Als .Net custom software developer creëer je maatwerkoplossingen. Denk aan een mobiele applicatie voor het stroomlijnen van logistieke processen, een platform voor een uitkeringsorganisatie of de passagiersbeleving van een vliegtuigmaatschappij. Hierbij gaat het vaak om complexe omgevingen met veel gebruikers, waarbij de lat dus hoog ligt. Wat jouw werkzaamheden zoal zijn? Je werkt mee aan het gehele ontwikkelproces, van ontwerp, design en ontwikkeling tot testen en beheren van Microsoft applicaties en PoC’s. Je gaat werken met o.a. de volgende technologie: Azure, C#, .Net core, Angular, React, Vue en soms AWS. Je neemt deel aan meetings

Bekijk vacature »
Jasper DS

Jasper DS

08/02/2013 16:43:30
Quote Anchor link
Hallo,

eerst en vooral sorry voor de slecht titel maar ik heb nog geen idee hoe ik het beestje wil noemen.

Situatie zit zo: ik heb een config.yml file die ik inlees met de Symfony Yaml parser. Van die parser krijg ik een array terug. Nu wil ik die array "herschrijven" (lees de vorm veranderen). Ik heb hier een kleine classe voor geschreven maar ik vroeg me af, is dit wel deftig, kan het niet beter?

config.yml
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
db:
    class: \PDO
    host: localhost
    user: root
    password: test123
    db: databank1
DBstorage:
    class: \Jframe\Storage\PDOStorage
    db: test


Ik heb mijn .yml bestand in deze structuur geschreven omdat dat lekker duidelijk is.

parser
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
<?php

require '../vendor/autoload.php';

use Symfony\Component\Yaml\Parser;



class configParser
{
    public $parameterBag = array();

    public function parseArray($values)
    {

        foreach($values as $key => $value)
        {

            foreach($value as $blahkey => $blah)
            {

                $this->setParam($key.'.'.$blahkey,$blah);
            }
        }
    }


    public function setParam($key, $value)
    {

        $this->parameterBag[$key] = $value;
    }


    public function getParam($key)
    {

        if(array_key_exists($key, $this->parameterBag))
        {

            return $this->parameterBag[$key];
        }

        else
        {
            throw new exception('Key not found');
        }

    }


    // enkel voor testen
    public function dump()
    {

        var_dump($this->parameterBag);
    }
    
}




$yaml = new Parser();

$parser = new configParser();

$values = $yaml->parse(file_get_contents('../app/config/config.yml'));

$parser->parseArray($values);
// $parser->dump();
echo $parser->getParam('db.class'); // \PDO
echo $parser->getParam('db.user'); // \root
echo $parser->getParam('DBstorage.class'); // \Jframe\Storage\PDOStorage
?>


Nadeel: deze klasse kan maar 2 niveaus aan, indien ik in config.yml nog één niveau dieper ga zit ik terug met een array als value.
Gewijzigd op 08/02/2013 16:44:00 door Jasper DS
 
PHP hulp

PHP hulp

28/01/2020 09:03:14
 
Kevin van Leeuwen

Kevin van Leeuwen

08/02/2013 16:51:50
Quote Anchor link
Op zich netjes gedaan maar je zou ook eigenlijk arrays kunnen mergen als je de values overschrijd bijvoorbeeld, hiermee bedoel ik dat je een method maakt die een config maakt en als ie bestaat dan overschrijd hij hem en anders voegt hij hem toe.
 
Jasper DS

Jasper DS

08/02/2013 17:07:12
Quote Anchor link
Class 'Jframe\Controller\FrontController' not found Woops verkeerde topic.

@Kevin, ik denk niet dat ik de arrays wil mergen. Alle keys moeten samen en hebben één value (string, int boolean maar geen array).

Stel nu dat ik dan ergens mijn dbuser nodig heb doe ik $config->get('db.user')
Gewijzigd op 08/02/2013 17:10:02 door Jasper DS
 
Erwin H

Erwin H

08/02/2013 17:15:06
Quote Anchor link
Als je meer niveau's wilt gaan (zonder dat vast te leggen) dan is denk ik de beste manier om het met een recursieve functie op te lossen. Als voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
function parseArray( $input, $currkey = '' ){
  foreach( $input as $key => $value ){
    if ( is_array( $value ) ){
      $this->parseArray( $value, $currkey.'.'.$key );
    }
else {
      //process
    }
  }
}

?>

Eerste aanroep is dan zonder currKey, want die is op dat moment nog leeg.
 
Wouter J

Wouter J

08/02/2013 17:17:30
Quote Anchor link
Het lijkt me handiger om de manier van ophalen te veranderen, dan de manier van invoegen.
 
Jasper DS

Jasper DS

08/02/2013 17:19:54
Quote Anchor link
@Erwin, oke mooi! Dat lijkt mij al een goede uitbreiding. :-)

@Wouter, jij bedoelt dat ik mijn .yml file anders moet opstellen toch? Ik vind dit wel een erg duidelijke en makkelijke oplossing qua configuratie? Ik heb bij Symfony liggen zoeken maar daar worden er meer als 6 klassen gebruikt waardoor ik de lijn kwijt was... :p
 
Wouter J

Wouter J

08/02/2013 17:22:08
Quote Anchor link
@Jasper, nee ik bedoel dat je Parser::getParam() moet aanpassen zodat hij de punten omzet in het uitlezen van een array.
 
Jasper DS

Jasper DS

08/02/2013 17:24:28
Quote Anchor link
Oke Wouter ik ben mee. Ik geloof dat je bedoelt dat $parameterBag gewoon de array bevat die de yaml parser binnensteekt. Indien ik dan $parser->get('db.class') aanroep moet mijn script het volgende doen: $this->parameterBag['db']['class']?
 
Wouter J

Wouter J

08/02/2013 17:46:39
Quote Anchor link
Ja, hoe ik het zou doen: https://gist.github.com/WouterJ/4740229

Deze maakt gebruik van de Symfony2.3 PropertyAccess component. Hierdoor heb je een enorm flexibele ParameterAccessor klasse, die zowel arrays als objects makkelijk kan uitlezen doormiddel van de '.'. Wat hij allemaal kan zie je in de unit test. Mocht je meer willen weten over de PropertyAccess component, de documentatie is al klaar maar nog niet online: https://github.com/WouterJ/symfony-docs/blob/8480e77fd15a9d93141e49fb155808bb7ff0c98d/components/property_access.rst
 
Jasper DS

Jasper DS

08/02/2013 17:50:12
Quote Anchor link
@Wouter, wat denk je van mijn class?

config.yml
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
db:
    class: \PDO
    host: localhost
    user: root
    password:
        hallo: jasper
        daag: desmet
    db: databank1
DBstorage:
    class: \Jframe\Storage\PDOStorage
    db: test



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
<?php

require '../vendor/autoload.php';

use Symfony\Component\Yaml\Parser;

// use Jframe\Controller\FrontController;

$fc = new Jframe\Controller\FrontController();


class configParser
{
    public $parameterBag = array();

    public function setParamBag(array $params)
    {

        $this->parameterBag = $params;
    }


    public function getParam($key)
    {

        $keys = explode(".", $key);

        //$key = implode('][', $keys);

        $array = $this->parameterBag;

        foreach($keys as $key)
        {

            $array = $array[$key];
        }


        return $array;    
    }


    // enkel voor testen
    public function dump()
    {

        var_dump($this->parameterBag);
    }
    
}




$yaml = new Parser();

$parser = new configParser();

$values = $yaml->parse(file_get_contents('../app/config/config.yml'));

$parser->setParamBag($values);

// $parser->parseArray($values);
//$parser->dump();

echo $parser->getParam('db.class') . '<br/>'; // \PDO
echo $parser->getParam('db.user') . '<br/>'; // \root
echo $parser->getParam('DBstorage.class') . '<br/>'; // \Jframe\Storage\PDOStorage
echo $parser->getParam('db.password.hallo') . '<br/>'; // jasper

?>
 
Wouter J

Wouter J

08/02/2013 17:54:49
Quote Anchor link
Jasper, het kan. Maar nu zit je dus wel vast aan het feit dat je een array krijgt, maar het is wel wat simpeler. Dus je moet je afvragen of je deze klasse ooit nog eens ergens anders kan gebruiken waarbij je een object hebt, anders zou ik gewoon dat doen.

Zorg wel even dat je je aan de standaarden houdt (het liefst PSR standaarden) en dus je klassenamen met een hoofdletter laat beginnen.
 
Jasper DS

Jasper DS

08/02/2013 18:06:06
Quote Anchor link
Ik heb deze class geschreven voor mijn DI-container. Zodat ik makkelijk vanop elke plaats aan mijn config bestand geraak. Dus moet deze klasse ooit een object lezen? Ik heb eens goed nagedacht maar ik kan niets verzinnen...

Standaarden komen in orde, dit is nog maar een test.php bestand :-)
Gewijzigd op 08/02/2013 18:06:18 door Jasper DS
 
Wouter J

Wouter J

08/02/2013 18:09:28
Quote Anchor link
Ik kan ook zo snel niet iets vinden, dus kun je jouwe gebruiken :)

Quote:
Standaarden komen in orde, dit is nog maar een test.php bestand :-)

Leer het jezelf gewoon aan om altijd via standaarden te scripten.
 
Jasper DS

Jasper DS

08/02/2013 18:13:20
Quote Anchor link
Quote:
Leer het jezelf gewoon aan om altijd via standaarden te scripten.


Oke, duidelijk! Ik zal er op letten. ;-)

Ik twijfel wel nog over de naam van deze klasse. Zoals ik al zei dient het als bridge tussen de DI-container en de .yml of wat ik ook zou kunnen doen is mijn .yml altijd op die manier uitlezen? Ik weet het niet goed...
Gewijzigd op 08/02/2013 18:14:33 door Jasper DS
 



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.