wie durft...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hands-on Solution Architect / Software Architect (

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 Solution Architect / Software Architect op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je werkt samen met gedreven DevOps teams, bestaande uit frontend, backend en middleware developers, testers, UX-designers. Samen met de teams ben je continu op zoek naar de beste oplossingen voor onze klanten. Als Solution Architect onderzoek

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en staan

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Senior Organisatieontwikkelaar

Als Organisatieontwikkelaar zorg je ervoor dat we in het magazijn van Coolblue altijd vooruit voetballen op het gebied Medewerker en Organisatie Ontwikkeling. Zo draag je bij aan een toekomstbestendig magazijn waar we klanten én medewerkers elke dag blijven verwonderen. Wat doe je als Senior Organisatieontwikkelaar bij Coolblue? Als Organisatieontwikkelaar werk je voor het magazijn van Coolblue. Je krijgt er energie van om continue te bouwen aan een toekomstbestendige organisatie. Dat doe je samen met 17 collega's in het HR-team, ieder met een eigen specialisme. Je werkt graag zelfstandig en je weet snel je weg te vinden als verandermanager. Ook ben

Bekijk vacature »

Front-end Developer - Juniorfunctie

Functie omschrijving Ben jij op zoek naar een uitdagende baan als front-end developer, in een informele werksfeer, waar jij echt het verschil kan maken? Wil jij graag werken voor een bedrijf dat sportiviteit en een open communicatie, hoog in het vaandel heeft staan? Dan hebben wij de perfecte vacature voor je! Voor een klein bedrijf in Rijen dat gespecialiseerd is in het omzetten van digitale woningtekeningen naar managementinformatie, zijn wij per direct op zoek naar een allround front-end developer. Jouw werkzaamheden zien er als volgt uit: Ja gaat nauw samenwerken met de back-end developer. De database structuur is volledig gebouwd

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

Bekijk vacature »

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

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 »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

Lead developer (PHP, Symfony, DDD)

Functie Als Lead developer zorg je ervoor dat het team (bestaande uit zowel junior als ervaren developers) in staat is om de kwaliteit van de software (en code) verder te verhogen. In samenwerking met het team, de product owner en de andere lead developers zet je technische lijnen uit en bepaal je de prioriteiten per sprint. Lijkt het jou interessant om complexe problemen op te lossen en bijvoorbeeld een nieuwe applicatiestructuur in Symfony op te zetten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en

Bekijk vacature »

Back-end PHP Software Developer - Juniorfunctie

Functieomschrijving Wij zijn op zoek naar een PHP Software Developer om ons team te versterken en mee te werken aan de ontwikkeling van eigen IOT-oplossingen. In deze functie ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor het uitlezen en managen van sensoren in machines. Je werkt nauw samen met een team van ontwikkelaars en engineers om de beste software-oplossingen te creëren. Jouw werkzaamheden zien er als volgt uit: Je bent in deze rol verantwoordelijk voor het ontwerpen, ontwikkelen en onderhouden van webapplicaties en softwaretoepassingen voor in-house ontwikkelde IOT oplossingen. Je werkt aan complexe databases en back-end

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij een team met 12 programmeurs. Jullie zijn verantwoordelijk voor het huidige platform van deze organisatie. Als team werken jullie in tweewekelijkse sprints en starten jullie iedere dag met een stand-up. Jij werkt samen met jouw team aan het uitbreiden van het huidige platform door middel van nieuwe features. Daarnaast zorg jij er samen met jouw team voor dat het platform veilig is en gebruiken jullie de nieuwste technieken om deze veiligheid te waarborgen. Zo maken jullie gebruik van C# .NET, .NET Core, React, Azure, Kubernetes, ASP.NET, MVC. Jij gaat aan het werk in

Bekijk vacature »
Ozzie PHP

Ozzie PHP

11/04/2013 17:33:12
Quote Anchor link
... mij uit te leggen hoe PHP onder de motorkap werkt?

Ik kan me nog herinneren dat in mijn Commodore 64 tijd je kon programmeren in de taal 'Basic'. En dat zag er dan zoiets uit:

Afbeelding
jeugdsentiment

Ik kan me ook nog herinneren dat ik als klein manneke een keer een boek had gekocht waarmee je een programma kon maken voor de Commodore 64, en met dat programma kon je "makkelijk" sprites maken.

Wat een sprite is?

Niet dit:

Afbeelding

Maar bijvoorbeeld deze luchtballon... een simpel plaatje bestaande uit "blokjes". Dat kon je dan over je beeldscherm laten vliegen... WOEEHOOEE... VET!!! ...ja, ehmm oké... ehhh, computers waren in die tijd nog niet zo high-tech als nu hè ;-)

Afbeelding
Ik kan me nog goed herinneren dat ik toch wel zo'n 20 bladzijdes met machinetaal heb overgetypt (hoe gek kun je zijn) en uiteindelijk werkte het programma worden boven wonder nog prima ook! (Wat zou er gebeurd zijn als ik 1 tekentje verkeerd had getypt...) Die machinetaal sprak rechtstreeks de processor aan en zag er ongeveer zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
sjhDSWJHJ54e srerkjherERLKG 4546edrfeFJG sdfjh455rrr LKJFGRTEF4556
sdfsdfFHDFDG ZNVFrej34djfdf WEtrrtij45DF 984JJEREkgH 89dfFDVDFkjkg
dffkjERKJ57R FEDKJEr456KJD1 GDFDcvmnoimJ Qxceer44DFg dfljk343GKJKv
.....
.....
enz.

(misschien zag het er in de praktijk iets anders uit, maar zo herinner ik het me)

Nu vraag ik me af... HOE WERKT PHP onder de motorkap? Wie kan (en durft) dat uit te leggen?

Stel we hebben deze code:

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

class Foo {

  private $bar;

  public function __construct($bar) {
    $this->bar = $bar;
  }

  
  public function getBar() {
    return $this->bar;
  }
}


$foo = new Foo('phphulp');
echo 'hallo ' . $foo->getBar();

?>

Wat gebeurt er nu onderwater? Hoe wordt deze code omgezet naar een tekst op het beeldscherm? Wat komt er allemaal bij kijken?

Lijkt me leuk als iemand hier iets over kan vertellen :-)
 
PHP hulp

PHP hulp

23/11/2024 16:58:15
 
- Ariën  -
Beheerder

- Ariën -

11/04/2013 17:39:19
Quote Anchor link
Nog meer jeugdsentiment:

Afbeelding
Met pookes en peeks heb ik uiteindelijk vroeger in combinatie met de Atari Home XL en de tape-recoder een programma geschreven (lees: 80% aan code uit een boekje overgetypt) om cassettebandjes af te kunnen spelen via je TV.

Vond ik best wel tof toen :-P

Volgens mij is PHP gebouwd op C# of C++. Ben zelf niet zo bekend met deze programmeertalen, maar je kan de source van PHP eens downloaden.

Lang leve open-source :-)
Gewijzigd op 11/04/2013 17:42:03 door - Ariën -
 
Ward van der Put
Moderator

Ward van der Put

11/04/2013 17:39:59
Quote Anchor link
Niks sprites ;) Een vliegtuig maak je zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
-o-

En dit is een bommenwerper:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
   |
---O---
 
Ozzie PHP

Ozzie PHP

11/04/2013 17:50:19
Quote Anchor link
Hahaha... lol. Dit topic gaat gelijk helemaal de verkeerde kant op :-D

@Aar: ja, dat waren wel toffe dingen he! En kijk ook hoe mooi die computers eruit zien! Je wil er gelijk mee spelen :)

Wat dacht je van deze (Atari 1040ST):

Afbeelding
en natuurlijk de Commodore 64

Afbeelding
met z'n gave spelletjes :-)

Afbeelding
Maar goed... hoe werkt PHP onder de motorkap... dat was dus de vraag :)
 
- Ariën  -
Beheerder

- Ariën -

11/04/2013 17:56:57
Quote Anchor link
- Aar - op 11/04/2013 17:39:19:
Volgens mij is PHP gebouwd op C# of C++. Ben zelf niet zo bekend met deze programmeertalen, maar je kan de source van PHP eens downloaden.

Lang leve open-source :-)
 
Jordi Kroon

Jordi Kroon

11/04/2013 18:09:39
Quote Anchor link
Kijk zelf maar :-)
https://github.com/php/php-src
 
Wouter J

Wouter J

11/04/2013 18:14:57
Quote Anchor link
Goed, laat ik dan maar een serieus antwoord geven.

PHP is gemaakt met C (dus niet C++ of C++++ (C#)). Een goed navigeerbare source code van PHP kan je hier vinden: http://lxr.php.net/

Voor een hele goede tut reeks hoe PHP werkt verwijs ik je naar: http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers.html

Even een simpel en leuk voorbeeldje:
PHP heeft als basis de Zend Engine. Dit is de grote parser (die staat in de map zend). Daarboven op heb je heel veel PHP extensies (die staan in ext). Dit zijn de meeste PHP functies. Deze functies zijn geregistreerd door PHP_FUNCTION <functienaam>.

Laten we explode opzoeken. We typen daarvoor in de zoekbar "PHP_FUNCTION strlen" in (met quotes). We krijgen dan 2 bestanden: php_string.h en string.c. In een .h (header) file staat beschreven welke functies die in .c staan gebruikt mogen worden door de buitenwereld. Niet erg interessant, we willen de functie weten dus klikken we op de line in string.c. We krijgen dan een hele lange code te zien.

Eerst zien we een hele reeks variabele definities. Leuk om te weten, maar meer niet. Vervolgens komt er dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l", &delim, &delim_len, &str, &str_len, &limit) == FAILURE) {
    return;
}

Hier worden de parameters die jij aan de functie geeft geparsed. Dat begin slaan we over, en dan zien we "ss|l". Dit betekend dat explode 2 parameters verwacht die beide string zijn. Vervolgens komen er de optionele parameters (aangegeven met de |) en dat is er 1 van het type long (getal). Daarachter zien we welke variabele in onze functie de waarde van de parameter krijgen. In ons geval delim + de lengte van delim, str + de lengte van str en limit.

Vervolgens zien we == FAILURE. FAILURE is een marco. C is een taal die eerst wordt gecompiled en vervolgens uitgevoerd kan worden. Met marco's kun je aan de compiler aangeven dat bepaalde keywords een andere waarde krijgen. Deze keywords herken je aan hun hoofdletters. Als we erop klikken zien we de waarde van deze marco:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
#define FAILURE -1

Er komt dus na het compilen == -1 te staan.

Goed, we gaan weer verder met onze functie. Als er iets fout is zal de functie stoppen met uitvoeren en zal de Zend Engine een fatal error geven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if (delim_len == 0) {
    php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter");
    RETURN_FALSE;
}

Hier kijken we of de delimeter een lengte heeft, zoniet dan zal PHP een E_WARNING error geven met de message 'Empty delimiter' (waarbij E_WARNING weer een marco is voor 1<<1L).
Daarna zal er false geretourneerd worden. (RETURN_FALSE is ook weer een macro)

Vervolgens wordt er nog zo'n check gedaan en daarna wordt php_explode of php_explode_negative_limit aangeroepen. Dit is een pattern dat vaak in PHP wordt gebruikt; de logica van een functie wordt gescheiden van de error handling. Dit zorgt ervoor dat de logica functie's zeer herbruikbaar zijn.

Dit was even een hele snelle introductie (hoe het precies werkt kun je uitvinden door php_explode uit te pluizen). Voor meer informatie verwijs ik graag naar de tutorialreeks die ik aan het begin van deze post plaatste.
 
Ward van der Put
Moderator

Ward van der Put

11/04/2013 18:34:28
Quote Anchor link
Maar daarom ging het ooit ook. Rasmus Lerdorf heeft PHP bedacht als voor mensen begrijpelijke scripttaal omdat hij niet eindeloos hetzelfde wilde doen in een programmeertaal.

Rasmus Lerdorf:
I hate programming with a passion.
 
Ozzie PHP

Ozzie PHP

11/04/2013 19:47:28
Quote Anchor link
@Wouter: thanks voor je uitleg! Zal binnenkort even de tutorial doorlezen. Je hebt het telkens over marco, maar ik neem aan dat je macro bedoelt?

Maar we hebben dus een onderliggende taal C die als het ware PHP "interpreteert". Dus PHP wordt omgezet in C. En wat gebeurt er dan? Wordt C omgezet in machinetaal en gaat het dan rechtstreeks naar de processor van de server?

P.S. Hoe weet jij dit allemaal? Heb je je jezelf er helemaal in verdiept?
 
Ward van der Put
Moderator

Ward van der Put

11/04/2013 19:54:10
 
Ozzie PHP

Ozzie PHP

11/04/2013 19:56:06
Quote Anchor link
thanks :)
 
Wouter J

Wouter J

11/04/2013 20:08:03
Quote Anchor link
Quote:
Je hebt het telkens over marco, maar ik neem aan dat je macro bedoelt?

Jep, typo

Quote:
Dus PHP wordt omgezet in C.

Fout. We hebben de Zend Engine. Deze werkt via het Lexer/Parser principe. Hij zal al jouw code omzetten in tokens. Bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$bar
= 'bar';
echo 'Foo'.$bar;
?>

Wordt omgezet in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
T_OPEN_TAG
T_VARIABELE T_EQUAL T_ENCAPSED_AND_WHITESPACE;
T_ECHO T_ENCAPSED_AND_WHITESPACE T_CONCAT T_VARIABLE;
T_CLOSE_TAG


Vervolgens wordt dit in een parser gezet. Die zal uit deze tokens opmaken wat hij er mee moet. Als hij een functie tegenkomt zal hij gaan kijken of die functie gedefinieerd is in 1 van de extensies (waaronder al de PHP extensies) en anders kijkt hij of het gedefinieerd is in jouw code. Dan zal hij deze functies aanroepen (in C uiteraard).

Wat er voor stap er voor C zit weet ik niet. Dat gaat me iets te ver om te weten.

Quote:
P.S. Hoe weet jij dit allemaal? Heb je je jezelf er helemaal in verdiept?

Je weet toch dat ik er van hou om te weten wat er nou gebeurd achter de schermen? Zodra ik ergens in programmeer wil ik weten wat er eigenlijk gebeurd en daarvoor moet je in de source code kijken. Toen Pim eens die link naar de tut stuurde ben ik verkocht en heb me eens hierin verdiept. Het is erg handig om naar te kijken en om dingen van te leren.
 
Ozzie PHP

Ozzie PHP

11/04/2013 20:15:08
Quote Anchor link
Ja, inderdaad handig om te weten... wel leuk. Maar of ik er ooit zo uitgebreid in zal duiken als jij... ???
Gewijzigd op 11/04/2013 20:15:24 door Ozzie PHP
 



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.