arrayParser (?)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Senior Cobol Applicatieontwikkelaar

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 In de applicatie ETM

Bekijk vacature »

Senior Software Developer C++

Vacature details Vakgebied: Software/IT Opleiding: Senior Vacature ID: 13342 Introductie Do you want to work for one of the most innovative companies located in the region of Eindhoven. Currently Due to growth we are looking for a Senior Software Developer. Our client is a high-tech company with international roots and can provide you with a challenging opportunity. Functieomschrijving Responsibilities: Design, develop, and maintain high-quality software applications in C++ Collaborate with other engineers, product managers, and stakeholders to understand requirements and develop solutions Write clean, maintainable, and efficient code Conduct thorough testing and debugging to ensure high-quality software Optimize applications for

Bekijk vacature »

Delphi Programmeur

Functie omschrijving Onze opdrachtgever is gespecialiseerd in kantoor-bedrijfssoftware en zit gevestigd in omgeving Numansdorp. Als programmeur ben jij bij dit bedrijf met het volgende bezig; Je vertaalt technische en functionele ontwerpen naar kwalitatieve software. Je ontwikkelt, ontwerpt en test software. Je maakt daarbij veel gebruik met de volgende tools & technologieën: Delphi 10.3 (Rio), QuickReport 6. Je krijgt in deze rol veel vrijheid en verantwoordelijkheid. Je levert projecten van A - Z op, en werkt daarbij projectmatig en gestructureerd. Bedrijfsprofiel Dit bedrijf richt zich op maatwerk software oplossingen. Deze software oplossingen worden ingezet in de financiële branche. Het betreft een

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

Bekijk vacature »

Robot Programmeur

Een verantwoordelijke baan met leuke uitdagingen. Heb jij ervaring met het programmeren van robots? Kan jij goed samenwerken met collega's die verschillende specialisaties hebben? Ben je oplossingsgericht, analytisch en flexibel? Ga dan aan de slag als Robot Programmeur bij Gibas in Nijkerk! Als Robot Programmeur kom je te werken bij Gibas. Dat betekent dat je gegarandeerd meewerkt aan unieke oplossingen in productieprocessen. Bij elk project moet er opnieuw geëngineerd en geprogrammeerd worden. Dat maakt jouw werk uitdagend! Voordat je robots gaat programmeren komt er het volgende bij kijken: De opdracht gaat van de afdeling Sales naar de afdeling Operations door

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

Front End Developer React Vue

Dit ga je doen Meewerken aan de implementaties en ontwikkeling van nieuwe functionaliteiten van de webapplicaties; Ontwikkelen met o.a. React en Vue en HTML/CSS, ook krijg je in verband met de samenwerking ook affiniteit met de backend Ruby on Rails; Ontwikkeling aan de front end voor de koppelingen tussen de diverse systemen; Ontwerpen van interfaces en een bijdrage leveren aan de gebruikerservaring; Zorgdragen voor hoge kwaliteit van code en jezelf (en anderen) blijven verbeteren; Als Senior Front End Developer begeleid je zelf ook FE-development projecten, hierin leid je de projecten en pak jij het initiatief op (bv integratieprojecten). Hier ga

Bekijk vacature »

Oracle Apex Developer

Dit ga je doen Jouw taken bestaan uit: Het bouwen maatwerk Oracle applicaties voor Europese business units; Het implementeren van de nieuwste technieken om te blijven innoveren; Actief meedenken en aandragen van verbetervoorstellen. Hier ga je werken Deze organisatie in de regio Veenendaal is een van wereld grootste retailers met ruim 16.000 winkels in 27 markten en jaarlijks ruim 5,3 miljard klanten die winkelen bij een van hun welbekende retailmerken. Binnen de organisatie is er een IT Group actief die dient als IT Service Provider voor de hele organisatie en waar dagelijks IT'ers werken aan state-of-the-art IT oplossingen. Dit doen

Bekijk vacature »

Front-end Developer - React - Data Driven

Bedrijfsomschrijving Onze klant is een snelgroeiende organisatie die een data-driven inspectieapp op de markt hebben gebracht die nu al een aantal jaar door verschillende organisaties wereldwijd gebruikt wordt. Er zijn zo'n 6 mensen werkzaam bij dit bedrijf en ze zijn nu vooral op zoek naar een sterke front-end developer die wil gaan werken aan nieuwbouw applicaties en de uitbouw van de huidige applicaties. De reden dat ze zoeken is omdat er veel werk op komst is en ze hier de juiste capaciteit voor willen hebben. Er heerst hier een hele prettige sfeer waarin respect en eerlijke communicatie belangrijk is. Ook

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

Medior/senior Front-end developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

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

23/11/2024 09:01:46
 
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.