arrayParser (?)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior C# Developer

You'll build modern applications for Coolblue back’s office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Senior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become Senior C# Developer at Coolblue? Read below if the job suits you You enjoy doing this Working with various types

Bekijk vacature »

BPM Developer

Je levert een belangrijke bijdrage aan de optimalisatie en inrichting van onze processen. Voor ons hoofdkantoor in Waalwijk zoeken wij een BPM Developer voor 32 tot 40 uur per week. Als BPM Developer lever je een belangrijke bijdrage aan de optimalisatie en inrichting van onze processen. Je levert een coördinerende en uitvoerende bijdrage in elke fase van de digitalisering van ons bedrijf. DMG, een huis vol mogelijkheden. DMG werkt met de software van Pegasystems. We werken zeer nauw samen met de Pega organisatie in NL, USA en India. DMG is begonnen met de invoering van Customer Service, Sales en Field

Bekijk vacature »

Web Developer (m/w/d)

Web Developer Location: Heidelberg, Germany Staff category: Staff Member Job type: IT and Infrastructure Contract duration: 4 years (project related) Grading: 6, 7 or 8; depending on experience (monthly salary starting from 3.7k€ up to 4.8k€ after tax, plus other benefits) Closing date: 23 May 2021 Reference number: HD01967 About this position IT Services operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. In collaboration with the EMBL-EBI in Cambridge our team is creating and implementing a new web infrastructure for all EMBL websites. We are looking

Bekijk vacature »

Backend .NET Developer C# Voetbal

Bedrijfsomschrijving Binnen deze organisatie in de regio Den Haag zal je als .NET Developer terecht komen in een multidisciplinair team met 5 andere Programmeurs. In jouw rol ben je verantwoordelijk voor het ontwikkelen en optimaliseren van mobiele applicaties met meer dan 4 miljoen gebruikers wereldwijd. Als Backend Developer zal je dagelijks werken met C#, .NET Core, Kubernetes en een SQL Database. Voor het onderling communiceren van de microservices wordt gebruik gemaakt van RabbitMQ. Je krijgt energie van technische uitdagingen en je werkt graag samen. Verder zul je in vele projecten deelnemen, zorg je voor nieuwe features, los je diverse bugs

Bekijk vacature »

Front-end Ontwikkelaar - Publieke Veiligheid

Help JIJ onze klanten in de Digitale Transitie? Neem dan contact met MIJ op! Wij geloven dat organisaties meer wendbaar moeten worden én blijven. Dat maakt organisaties toekomstbestendig. Ben jij een leergierige software engineer met passie voor front-end development? Wil jij je verder ontwikkelen in de nieuwste front-end technologieën? Zoek jij uitdagende klussen in teamverband? Wij bieden jou die uitdaging en de mogelijkheden jezelf verder te ontwikkelen. We leveren een bijdrage aan het veiliger maken van Nederland en daar zijn we trots op! Heb je minimaal drie jaar ervaring in zo’n mooie rol, ben je inspirerend en dynamisch? In de

Bekijk vacature »

Backend PHP developers voor scale-up organisatie g

Bedrijfsomschrijving Voor een snelgroeiende scale-up organisatie met een start-up mentaliteit ben ik op zoek naar een medior/senior Backend PHP developer! Wie ben jij? Jij bent een ervaren PHP developer die het leuk vindt om mooie codes te schrijven in een leuk, gezellig en jong team. Het is een frisse en moderne organisatie waar de leeftijd tussen de 25 en 40 jaar ligt. Naast dat het een mooie organisatie is hebben ze een hip en modern kantoor die goed bereikbaar is met het openbaar vervoer en de auto. Je krijgt hier als developer dé mogelijkheid om aan een groot avontuur te

Bekijk vacature »

Senior Software Developer

Bedrijfsomschrijving De organisatie waar je komt te werken is een enterprise omgeving waarbij IT een belangrijke rol speelt. Door de vele veranderingen in de markt waar zij op in moeten spelen, werken zij met innovatieve technologieën. Het team is erg stabiel en werkt continue aan het optimaliseren van de complexe omgeving, het implementeren van vernieuwingen. Jou kennis, expertise en enthousiasme zal hier een belangrijke bijdrage aan leveren! Belangrijk onderdeel van de werkzaamheden zal het optimaliseren van de Cloud omgeving zijn. Er heerst een familiare sfeer en collegialiteit is een belangrijk element. De maximale werkweek bestaat uit 40 uur deze zijn

Bekijk vacature »

Software Developer / Java / Python / React / Big D

Bedrijfsomschrijving Bij dit grote, innovatieve technische bedrijf wil men graag flink groeien dit jaar, namelijk van zo'n 100 naar 120 mensen. In de afgelopen jaren is er hard gewerkt om een nieuw software product op de markt te zetten ter ondersteuning van hun fysieke producten en omdat dit een groot succes is, wordt het nu uitgerold over het hele bedrijf en daarmee een groot deel van de wereld. Er is dus werk aan de winkel! Jij werkt in het Big Data team waarbij je de UI ontwikkelt waar inzicht gegeven wordt in de enorme hoeveelheden data. Vanuit duizenden sensoren komen

Bekijk vacature »

Senior C# Developer

We’re Hiring! A UPS Senior C# Developer *REMOTE WORK POSSIBLE FOR THIS ROLE* UPS is the world's largest package delivery company – with a strong and recognizable brand, and a legendary reputation for great service. We are looking for an enthusiastic Senior C# Developer to join our IT Team, As a Senior Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life

Bekijk vacature »

.NET DEVELOPER - GRADUATE PROGRAMMA

Functieomschrijving Ben je onlangs afgestudeerd van een IT-opleiding of heb je nog maar weinig ervaring opgedaan? En wil je toch graag aan de slag als .NET Developer? Lees dan snel verder, want op 5 juli en 9 augustus 2021 starten wij weer met een graduate programma waarin jij jezelf kunt ontwikkelen tot een volwaardige Fullstack .NET Developer! In juli en augustus krijg jij via de Experis Academy een unieke kans om jouw IT-carrière een kickstart te geven en jezelf te ontwikkelen tot Fullstack .NET Developer. Zo volg je de eerste drie maanden een full time op maat gemaakte training waarin

Bekijk vacature »

Outsystems developer - Energiemarkt

Ben jij een ervaren Outsystems developer met de skills om te luisteren, te analyseren en te inspireren? Dit is een uitgelezen kans om je aan te sluiten bij een snel groeiend team binnen CGI. Vanuit het team leveren we IT-projecten die de levens van miljoenen mensen raken! Wat ga je doen? Als OutSystems developer ontwikkel en implementeer je binnen ons team nieuwe applicaties, verbeter en onderhoud je de prestaties van bestaande applicaties en werk je aan diverse projecten van onze klant. Je helpt met het omzetten van wensen naar werkende software van het hoogste niveau op basis van een Agile-werkmethodiek.

Bekijk vacature »

Junior BI Developer

Bedrijfsomschrijving De organisatie waar je komt te werken als BI Developer is een grote internationale financiële instelling. Met vele vestigingen in Nederland zijn ze een belangrijke speler op de financiële markt. Jij zal hoofdzakelijk op het kantoor in Amsterdam werkzaam zijn, maar het kan ook voorkomen dat je af en toe naar een andere vestiging gaat. Het bedrijf telt ongeveer 5000 medewerkers waarvan ruim 150 ICT'ers. Het team waar je in komt te werken als (Junior) BI Developer is een ambitieus BI team dat zich bezighoudt met lokale en internationale uitdagingen. Zo zit een andere Junior BI Developer, 2 Medior

Bekijk vacature »

Functioneel Applicatiebeheerder

Wij zijn op zoek naar een enthousiaste Functioneel Applicatiebeheerder Jij: Vindt het leuk om binnen een klein IT-team aan de slag te gaan met het functioneel beheer van voornamelijk Microsoft Business Central, maar ook andere applicaties. Kan goed schakelen tussen operationeel beheer en business change en wordt blij van een brede functie die bestaat uit beide aspecten. Zoekt graag dingen uit, analyseert processen en informatiestromen waarbij je in oplossingen denkt. Hebt kennis van ITIL, TMap en BiSL of bent bereid om hier trainingen in te volgen. Bent in staat om de vragen en behoeften van gebruikers te vertalen naar concrete

Bekijk vacature »

Senior BI Developer gezocht voor de transportsecto

Bedrijfsomschrijving Voor een IT bedrijf die actief is binnen de Transport en Logistiek ben ik zoekende naar een Senior BI Specialist met sterke ETL skills. Je komt te werken binnen een jong en dynamisch team van 12 collega's waarin je transportorganisatie helpt om meer data gedreven te werken. Ze werken hier volgens de Scrum werkwijze middels sprints en afwisselende doelstellingen die bijvoorbeeld gericht zijn op het uitbreiden van de Datawarehouse of het creëren van Power BI oplossingen. De werkwijze is hier pragmatisch en no-nonsense met natuurlijk oog voor klant en collega's. Daarnaast houden ze van games en een lolletje op

Bekijk vacature »

Projectleider IT

Van wifi voor onze wooncomplexen tot IT building management, als projectleider IT ben jij in de lead. Met een heldere en professionele aanpak speel jij vandaag in op de ontwikkelingen van morgen. IT-projecten en wooninnovaties in goede banen leiden Goede internetvoorzieningen zijn tegenwoordig onmisbaar. Zeker als je studeert. Online colleges volgen, samenwerken, papers schrijven en research doen, het gaat allemaal via de digitale snelweg. Of wat dacht je van video’s streamen of online gamen? Bij de SSH maken we dit mogelijk met optimale internetconnectiviteit via ons eigen SSH-net. Aan jou als projectleider om ervoor te zorgen dat deze internetdienstverlening voor

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

14/05/2021 04:00:34
 
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.