wie durft...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cobol Developer

Dit ga je doen Als Cobol Ontwikkelaar zal je gaan meebouwen aan een onderdeel van het backend systeem waarbij je het functionele ontwerp vertaald naar een technische oplossing die geïntegreerd kan worden in de huidige omgeving. Je zorgt ervoor dat de bedrijfsprocessen op een efficiënte manier worden uitgevoerd en werkt proactief aan het verbeteren hiervan. Samen met jouw collega’s reviewen jullie elkaars code en test je je eigen code. Je werkt nauw samen met andere ontwikkelaars, testers en functioneel ontwerpers. Taken pakket: Beheren en doorontwikkelen van de bestaande omgeving; Vertalen van een functionele vragen naar een technische oplossing; Doorvoeren van

Bekijk vacature »

Senior PHP Developer

Als Senior PHP Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn en coach je andere developers op de hard en soft skills. Wat doe je als Senior PHP Developer bij Coolblue? Als PHP Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Hoewel je een PHP Developer bent, sta je open om C# of Typescript in te zetten of te leren. Ook PHP Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Capelle ad Ijssel Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Een deel van jouw werkzaamheden: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps en Power BI.

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Wij zijn voor een leuke opdrachtgever in omgeving Naaldwijk op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Wij zoeken iemand die breed inzetbaar is en die aan veel verschillende applicaties wilt werken. Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind

Bekijk vacature »

Full stack developer Node.js

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

Starter/junior Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als starter/junior developer zul je direct begeleid worden door een senior uit het team. Het is van belang dat

Bekijk vacature »

WordPress & Azure Developer

Dit ga je doen Zowel front- als back-end development aan de online website omgeving; Het up-to-date houden van alle WordPress-sites; Koppelingen maken tussen applicaties; Meedenken en adviseren over verbeteringen; Development door middel van WordPress, Javascript, HTML en CSS; Werken binnen Scrum/Agile team. Hier ga je werken Voor een grote overheidsinstelling in Den Haag zijn wij opzoek naar een WordPress developer, met kennis en ervaring op het gebied van Azure. De organisatie zit in een grote transitie waarbij de gehele website/online omgeving vernieuwd zal gaan worden. Binnen dit Scrum/Agile team ben je verantwoordelijk voor deze grote migratie/ombouw van de omgeving. De

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. 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 het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een development team met één Senior .NET developer en één junior .NET developer. Als team zijn jullie verantwoordelijk voor het schrijven van software voor onze toonaangevende Automatiseringssystemen. Jij gaat aan de slag met de onderhoud van de kernsoftware, ondersteund de software van derden door het gebruik van onze webservices en als team zijn jullie verantwoordelijk voor het ontwikkelen van onze backend oplossingen. Wij maken op dit moment veel gebruik van .NET met ASP.NET. Komend kwartaal gaan wij wel gedeeltelijk overstappen naar .NET Core. Verder werken wij ook met SOAP, REST, JSON, HTML5, CSS3

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

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

13/11/2024 08:20:26
 
- 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.