wie durft...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer .NET, C# voor een gaaf bedrijf in de omgeving van Utrecht! 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? Lees dan snel verder! Voor een opdrachtgever in de omgeving van Utrecht, zijn wij op zoek naar een Junior Software Developer. Werk jij graag aan verschillende projecten en ga je graag klanten op bezoek? Dan is dit de ideale functie voor jou! Binnen deze functie

Bekijk vacature »

Software Ontwikkelaar

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 »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Boskoop dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? 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 het gebied van geleverde software en webapplicaties. Je gaat software en webapplicaties ontwikkelen met behulp van de talen

Bekijk vacature »

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in

Bekijk vacature »

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 »

Oracle Apex developer

Bedrijfsomschrijving My client is a technology company based in Den Bosch, the Netherlands. They specialize in providing innovative software solutions to clients, and they are currently looking for an experienced Oracle Apex developer to join the IT team. Functieomschrijving As an Oracle Apex developer, you will be responsible for designing, developing, and maintaining web-based applications using Oracle Apex. You will work closely with project managers, business analysts, and other developers to ensure that clients' needs are met and that the software solutions are of the highest quality. Responsibilities: Design, develop, and maintain Oracle Apex applications. Work with project managers and

Bekijk vacature »

PHP Software Developer

Functie omschrijving Op zoek naar een nieuwe uitdaging binnen PHP? Lees dan snel verder! Wij zoeken een ervaren PHP developer die binnen een organisatie gaat functioneren als verlengstuk van de klant. Wij zoeken voor deze iemand die technisch complexe zaken met enthousiasme en plezier aanvliegt. Verder moet je instaat zijn om je tijd goed te managen omdat je aan meerdere projecten tegelijkertijd werkt. Je werkt met de nieuwste technieken en tijdens deze uitdaging werk je veel samen met de front-end developers van deze organisatie. Wij zoeken iemand die zichzelf graag uitdaagt en altijd de beste wilt zijn. Bedrijfsprofiel Waar ga

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Medior/Senior Python developer

Functie Jij als Senior Python developer hebt al ruime ervaring opgedaan. Bedrijven komen bij de organisatie om technische vraagstukken op te lossen. Jij als specialist bent dus de representatie van deze kwaliteit. Je zult de keuze krijgen tussen lange of korte projecten waarin je komt te werken in multidisciplinaire teams. Projecten die je gaat uitvoeren zijn zeer uitlopend. Zodoende kun je aan de ene kant kiezen voor een greenfield project en stroom je bij een ander project midden in een migratietraject in. Voor de ene klant ontwikkel je ene nieuwe portal en voor het andere project duik je veel meer

Bekijk vacature »

Front-end developer (Medior/Senior)

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Junior PHP (Laravel) Developer

Functie omschrijving Wij zijn op zoek naar een PHP Laravel Developer! Sta je aan het begin van je carrière en ben je op zoek naar een leuke baan? Lees dan verder! Voor een softwarebedrijf in omgeving van Schiphol zijn wij op zoek naar een ervaren PHP (Laravel) Developer. Je gaat je bezighouden met het ontwikkelen van innovatieve bedrijfsapplicaties. Samen met het team, bestaande uit designers en developers, maak je mooie oplossingen voor bedrijven in diverse branches. Je zorgt dat de opgeleverde websites perfect werken en de klant meer dan tevreden is. Je kunt rekenen op een afwisselende baan met leuke

Bekijk vacature »

Als Front-end developer bijdragen aan het onderwij

Functie Als front-end developer om je terecht in een team van goede en ervaren developers, en ga je werken aan de software die door miljoenen mensen gebruikt wordt. Je bent in staat om designs effectief te vertalen naar werkende feautures en hebt oog voor een goede UX van het product. Je staat voor clean code en goede documentatie. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit software en code. Je dagelijkse werk bestaat uit het werken aan componenten in de Storybook. Het verbeteren en refactoren van de huidige

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a (Senior) Java

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

21/09/2024 03:05:33
 
- 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.