PHP 6: hoe en wat?
Door PHP erik, 20 jaar geleden, 115.585x bekeken
Wat kunnen we van PHP 6 gaan verwachten? De grote schoonmaak is begonnen! Weg met magic_quotes, register_globals, safe_mode en mysql_query()! En welkom namespaces en label/goto. Begin nu al je scripts veilig en logisch te maken!
Gesponsorde koppelingen
Inhoudsopgave
- Installatie PHP 6 naast PHP 5
- Inleiding
- Bye@ Register_globals, magic_quotes, mysql_query()
- Namespaces (vanaf PHP 5.3)
- Label en goto
- Verkorte ifsetor() (vanaf PHP 5.3)
- Static keyword (vanaf PHP 5.3?)
Er zijn 111 reacties op 'Php 6 hoe en wat'
Gesponsorde koppelingen
Het is ook maar goed dat men gedwongen wordt PDO te gebruiken. Stel dat mysql_query() nog zou werken, dan zouden er 1 miljoen scripts straks volledig lek zijn (SQL injection) zonder dat men er bewust van is. Met het verwijderen van magic_quotes zal dus ook wel PDO afgedwongen moeten worden, anders wordt het ??n groot drama. Hopelijk gaan de webhostingbedrijven niet de extensies aanzetten waardoor het alsnog werkt. Maar we spreken hier nu toch over +/- 2010 voordat hosts overstappen denk ik.
Voor die mensen die alvast uitkijken naar die nieuwe ?: notatie, hier is een simpel trucje om nu al iets vergelijkbaars te doen:
Verder heb ik gelezen dat het 'static' keyword in PHP6 ook anders gaat werken in klassen. Zo zou die nu verwijzen naar de actieve klasse (de klasse waarvandaan je hem aanroept) in plaats van de klasse waar de static method/var in is gedefinieerd.
Code (php)
Verder heb ik gelezen dat het 'static' keyword in PHP6 ook anders gaat werken in klassen. Zo zou die nu verwijzen naar de actieve klasse (de klasse waarvandaan je hem aanroept) in plaats van de klasse waar de static method/var in is gedefinieerd.
Jelmer, dat is toevallig, ik was het net aan het aanpassen. Ik was vergeten te melden van de ifsetor(). Ook heb ik even een fout hersteld. Hij geeft namelijk wel de verwachte werking, maar ook een onverwachte notice, en dat zou niet moeten. Dus hij is nog steeds een beetje buggy vanwege de notice. Bedankt voor je reactie, je hebt me even wakker geschud dat het natuurlijk gaat over isset() en niet over andere vergelijkingen. Althans, er staat op PHP.net (bijna?) niets over beschreven, maar dat is het idee.
en was het trouwens niet zo dat mysql mysqli word? zoiets tegengekomen..
ff zoeken..
http://www.phphulp.nl/php/tutorials/8/533/ staat het wel beschreven, blijkt dat mysqli gewoon blijft dus.
ff zoeken..
http://www.phphulp.nl/php/tutorials/8/533/ staat het wel beschreven, blijkt dat mysqli gewoon blijft dus.
Correctie: mysqli blijft gewoon een extensie, zoals nu. Maar het zit niet standaard in je PHP. Ik zou gewoon PDO gebruiken, geen reden voor mysqli.
Feitelijk verandert er hierbij niets, mysqli is nu ook een extensie, maar het is beter om gewoon naar de standaard PDO te gaan.
Er zijn wat dingen toegevoegd en veranderd in de loop der uren in deze tutorial, bekijk even de laatste 2 pagina's opnieuw :). Late static binding ook toegevoegd.
Quote:
Nee dus. Ik had het al aangepast in de tut, maar dat heb jij waarschijnlijk niet gezien.en was het trouwens niet zo dat mysql mysqli word? zoiets tegengekomen..
Quote:
mysqli is op dit moment een extensie en dat zal het blijven en die zal mogelijk standaard wel aan staan bij veel hosts.http://www.phphulp.nl/php/tutorials/8/533/ staat het wel beschreven, blijkt dat mysqli gewoon blijft dus.
Feitelijk verandert er hierbij niets, mysqli is nu ook een extensie, maar het is beter om gewoon naar de standaard PDO te gaan.
Er zijn wat dingen toegevoegd en veranderd in de loop der uren in deze tutorial, bekijk even de laatste 2 pagina's opnieuw :). Late static binding ook toegevoegd.
eigenlijk word het dus tijd voor een flinke omscholing :P
en dan ga ik ook meteen op zoek naar een host met php6, zodat ik ook zeker weet dat ik dat ga scripten.
Ik denk namelijk dat als je meteen begint met php6 scripten, dat je dan over een jaar of 2 een voordeel hebt op de rest van de programeurs, die php5 zijn blijven programeren (net zoals de mensen die nu nog php4 gebruiken.)
en dan ga ik ook meteen op zoek naar een host met php6, zodat ik ook zeker weet dat ik dat ga scripten.
Ik denk namelijk dat als je meteen begint met php6 scripten, dat je dan over een jaar of 2 een voordeel hebt op de rest van de programeurs, die php5 zijn blijven programeren (net zoals de mensen die nu nog php4 gebruiken.)
PHP 6 is nog niet echt uit h?, dus het is niet aan te raden hier serieus projecten mee te maken. Daar zul je nog minimaal een aantal maanden op moeten wachten, misschien wel meer dan een jaar.
Als je gewoon goed PHP 5 programmeert dan is er geen verschil met PHP 6 eigenlijk. Al mijn scripts zullen zo prima werken op PHP 6 zonder 1 aanpassing. Dus als je dat gewoon weet te bereiken dan is er niks aan de hand en weet je zeker dat je bepaalde dingen goed doet.
Als je gewoon goed PHP 5 programmeert dan is er geen verschil met PHP 6 eigenlijk. Al mijn scripts zullen zo prima werken op PHP 6 zonder 1 aanpassing. Dus als je dat gewoon weet te bereiken dan is er niks aan de hand en weet je zeker dat je bepaalde dingen goed doet.
Mooi, het lijkt er dus op dat ik al klaar ben voor versie 6.
De goto haalt wel oude, hele oude, herinneringen op... Doet me denken aan m'n eerste programmeer-avonturen in GWBasic op onze eerste pc, een 8088-machine met maar liefst 256KB geheugen, HD van 20MB en een 5 1/4" floppydrive. Er waren alleen geen spelletjes, dat was wel jammer.
De goto haalt wel oude, hele oude, herinneringen op... Doet me denken aan m'n eerste programmeer-avonturen in GWBasic op onze eerste pc, een 8088-machine met maar liefst 256KB geheugen, HD van 20MB en een 5 1/4" floppydrive. Er waren alleen geen spelletjes, dat was wel jammer.
Wauw GoTo das idd heel lang geleden. Komt er ook On Error Resume To?
Het stukje alleen PDO gebruiken vind ik overdreven. In principe is MySQLi even goed als PDO. Voordeel van PDO is dat je ook een andere database er aan kan hangen echter kan dit toch weer stuiten op database server verschillen (lees mysql vs firebird bv).
Ik vrees dat bij de invoering van PHP het opeens heel druk gaat worden hier op PHPHulp. Een webhoster moet wel gek zijn om klanten verplicht over te zetten op PHP 6. Het "ontbreken" van de gewone MySQL extensie zal het merendeel van de websites onbruikbaar maken.
edit: Toevoeging: http://php6dev.blogspot.com/
Het stukje alleen PDO gebruiken vind ik overdreven. In principe is MySQLi even goed als PDO. Voordeel van PDO is dat je ook een andere database er aan kan hangen echter kan dit toch weer stuiten op database server verschillen (lees mysql vs firebird bv).
Ik vrees dat bij de invoering van PHP het opeens heel druk gaat worden hier op PHPHulp. Een webhoster moet wel gek zijn om klanten verplicht over te zetten op PHP 6. Het "ontbreken" van de gewone MySQL extensie zal het merendeel van de websites onbruikbaar maken.
edit: Toevoeging: http://php6dev.blogspot.com/
Webmakerij, een hoster kan ook zorgen dat beide naast elkaar draaien (tenminste met linux servers)
En dan door middel van extensie (.php6) en eventueel .htaccess zorgen dat je kunt kiezen welke versie je wilt.
Zo heeft de klant de keuze en de tijd om alles over te zetten.
Maar tevens gaat het erom welke service je wilt bieden. En of je het als een uitdaging of juist als een last ziet.
@PHPErik, het is een duidelijke en nette tutorial. Dankjewel!
En dan door middel van extensie (.php6) en eventueel .htaccess zorgen dat je kunt kiezen welke versie je wilt.
Zo heeft de klant de keuze en de tijd om alles over te zetten.
Maar tevens gaat het erom welke service je wilt bieden. En of je het als een uitdaging of juist als een last ziet.
@PHPErik, het is een duidelijke en nette tutorial. Dankjewel!
@Webmakerij: Wanneer je nu al over PHP versie 5 met PDO beschikt, dan moet je dus wel heel erg gek zijn wanneer je daar geen gebruik van gaat maken. Je weet dat je straks niet meer met mysql_query() en zijn vriendjes aan de slag kunt.
PDO is nu al beschikbaar en je weet dat je over enkele jaren niet meer zonder kunt. Begin dan n? al met de conversie, dan heb je daar later alleen maar plezier van.
Tip: Maak voor jezelf wat snippets in je IDE aan, dan heb je PDO er zo instaan. Ik hoef in Zend alleen maar 'pdostart' en 'pdoselect' in te kloppen om een verbinding op te zetten en een select-statement aan te maken, incl. foutafhandeling. Query invullen, wat details uitwerken en klaar is kees.
PDO is nu al beschikbaar en je weet dat je over enkele jaren niet meer zonder kunt. Begin dan n? al met de conversie, dan heb je daar later alleen maar plezier van.
Tip: Maak voor jezelf wat snippets in je IDE aan, dan heb je PDO er zo instaan. Ik hoef in Zend alleen maar 'pdostart' en 'pdoselect' in te kloppen om een verbinding op te zetten en een select-statement aan te maken, incl. foutafhandeling. Query invullen, wat details uitwerken en klaar is kees.
TJVB een goede hoster draait PHP 6 en PHP 5 gewoon naast elkaar dmv FastCGI en dan keuze per domein.
edit (zinnetje vergeten). Een .php6 extensie is kansloos en onhandig.
pgFrank ik werk ook niet meer met mysql maar met mysqli. Ik vind het alleen zo dat mysqli niet onderdoet in principe voor pdo.
edit (zinnetje vergeten). Een .php6 extensie is kansloos en onhandig.
pgFrank ik werk ook niet meer met mysql maar met mysqli. Ik vind het alleen zo dat mysqli niet onderdoet in principe voor pdo.
Quote:
Je hebt blijkbaar geen idee waar het over gaat. Maarja geeft niet, ga eens met MVC werken zou ik zeggen. Dat zal toch wel de standaard worden want PHP jat alles uit C++ en Java. Kijk maar naar phpdocumentor (javadoc), zend framework (java/servlets/jsp/etc), smarty (jsp), namespaces (c++ namespaces, java packages), etc. Dan zal je je index.php ook moet veranderen naar een php6 of alles op rewrite gooien.
Quote:
Nee, dit komt omdat iedereen een host kiest met zijn of haar gewenste versie. Enige idee waarom we .php4 en .php5 nergens zien? Kennelijk zijn ze niet handig ondanks dat ze vaak wel beschikbaar zijn.
Maar het zal wel een feit blijven dat in het begin alleen veel professionals php6 willen, dat is dus een goede markt voor de webhosts.
Al ik dit zo allemaal lees is PHP6 een goede vooruitgang.
Maar ik heb toch 2 vragen over dat PDO.
Stel nu dat ik een project ontwikkel speciaal voor een bepaald database systeem. Ik weet de meeste risco's van het handmatig uitvoeren van queries. Hiervoor heb ik dan ook zelf tooltjes gemaakt. Is het gebruik van PDO dan ook nadelig voor de snelheid ten opzichte van b.v. de mysql extensie?
De meestal database systemen hebben eigen toevoegingen/veranderingen op de sql standaarden. Als ik met PDO voor MySQL kies dan kan ik toch niet zonder problemen overstappen op pgSQL?
Maar ik heb toch 2 vragen over dat PDO.
Stel nu dat ik een project ontwikkel speciaal voor een bepaald database systeem. Ik weet de meeste risco's van het handmatig uitvoeren van queries. Hiervoor heb ik dan ook zelf tooltjes gemaakt. Is het gebruik van PDO dan ook nadelig voor de snelheid ten opzichte van b.v. de mysql extensie?
De meestal database systemen hebben eigen toevoegingen/veranderingen op de sql standaarden. Als ik met PDO voor MySQL kies dan kan ik toch niet zonder problemen overstappen op pgSQL?
Als je met PDO werkt kun je JUIST van database veranderen door slechts ??n regeltje te veranderen (de database-connectie). Dat is ??n van de belangrijkste doelen van PDO! Alleen als je specifieke functies gebruikt van bepaalde databases dan zul je die wel moeten herschrijven. Daar wordt vaak het MVC-patroon voor gebruikt. In de model doe je simpelweg iets als getNews() en in die functie wordt dan bepaald hoe het nieuws wordt opgehaald. Je kunt dan bij het overstappen naar een andere databases desnoods die klasse extenden zodat je de functies overschrijft die niet cross-database zijn.
Straks voor de nieuwe PHPhulp zullen we ook hier rekening mee moeten gaan houden met "nieuwe" scripts. Oude scripts die nog werken met het "REGISTER_GLOBALS" gebeuren, moeten overigens wel uit de database, deze zullen niet meer werken.(of ze moeten herschreven worden)
Omdat PDO al in PHP 5 zit (en een provider die met PHP4 werkt kan echt niet meer, of iig niet als ze geen PHP5 aanbieden)
Voor de veiligheid is het ook een goede zaak, rond 2010 (als het echt ingevoerd wordt) zullen de scripts van "amateurs die ff wat flansen" een stuk veiliger zijn.
Gelukkig zijn er hier ook zat die wel weten hoe het moet, en ook mensen zat die beginnelingen wijzen op de veiligheidslekken die in scriptjes zitten.
Goeie tut Erik, vind het allemaal positieve, goede veranderingen in de nieuwe versie. Eindelijk niet meer van die slecht beveiligde scriptjes, omdat je errors gaat krijgen.Straks voor de nieuwe PHPhulp zullen we ook hier rekening mee moeten gaan houden met "nieuwe" scripts. Oude scripts die nog werken met het "REGISTER_GLOBALS" gebeuren, moeten overigens wel uit de database, deze zullen niet meer werken.(of ze moeten herschreven worden)
Omdat PDO al in PHP 5 zit (en een provider die met PHP4 werkt kan echt niet meer, of iig niet als ze geen PHP5 aanbieden)
Voor de veiligheid is het ook een goede zaak, rond 2010 (als het echt ingevoerd wordt) zullen de scripts van "amateurs die ff wat flansen" een stuk veiliger zijn.
Gelukkig zijn er hier ook zat die wel weten hoe het moet, en ook mensen zat die beginnelingen wijzen op de veiligheidslekken die in scriptjes zitten.
Goeie tut Erik, vind het allemaal positieve, goede veranderingen in de nieuwe versie. Eindelijk niet meer van die slecht beveiligde scriptjes, omdat je errors gaat krijgen.
Omdat PDO al in PHP 5 zit (en een provider die met PHP4 werkt kan echt niet meer, of iig niet als ze geen PHP5 aanbieden)
Voor de veiligheid is het ook een goede zaak, rond 2010 (als het echt ingevoerd wordt) zullen de scripts van "amateurs die ff wat flansen" een stuk veiliger zijn.
Gelukkig zijn er hier ook zat die wel weten hoe het moet, en ook mensen zat die beginnelingen wijzen op de veiligheidslekken die in scriptjes zitten.
Goeie tut Erik, vind het allemaal positieve, goede veranderingen in de nieuwe versie. Eindelijk niet meer van die slecht beveiligde scriptjes, omdat je errors gaat krijgen.Straks voor de nieuwe PHPhulp zullen we ook hier rekening mee moeten gaan houden met "nieuwe" scripts. Oude scripts die nog werken met het "REGISTER_GLOBALS" gebeuren, moeten overigens wel uit de database, deze zullen niet meer werken.(of ze moeten herschreven worden)
Omdat PDO al in PHP 5 zit (en een provider die met PHP4 werkt kan echt niet meer, of iig niet als ze geen PHP5 aanbieden)
Voor de veiligheid is het ook een goede zaak, rond 2010 (als het echt ingevoerd wordt) zullen de scripts van "amateurs die ff wat flansen" een stuk veiliger zijn.
Gelukkig zijn er hier ook zat die wel weten hoe het moet, en ook mensen zat die beginnelingen wijzen op de veiligheidslekken die in scriptjes zitten.
Goeie tut Erik, vind het allemaal positieve, goede veranderingen in de nieuwe versie. Eindelijk niet meer van die slecht beveiligde scriptjes, omdat je errors gaat krijgen.
Quote:
Wanneer jij correcte ANSI-SQL gebruikt, dan hoef je alleen maar de functienamen in SQL aan te passen. pgSQL kent bv. geen functie DATE_FORMAT(), maar TO_CHAR(). Zo heeft iedere database wel zijn eigen namen voor de diverse functies, dat is (helaas) niks bijzonders.Als ik met PDO voor MySQL kies dan kan ik toch niet zonder problemen overstappen op pgSQL?
Gebruik je g??n ANSI-SQL, dan wordt het mogelijk een ander verhaal. Dan zou het zo maar kunnen dat je er ineens achterkomt dat jouw systeem stijf staat van de bugs en andere fouten.
Dit werkt by default in MySQL (configuratie) ondanks dat de query hartstikke fout is. Wanneer je kiest voor MySQL, hoor je ook te weten dat je jezelf een hoop ellende op de hals haalt. Dat 'iedereen' MySQL gebruikt, is op zich geen reden om dan zelf ook maar van de brug te springen. Zelf nadenken kan geen kwaad.
ik vindt het nogal raar dat ze alle mysql_* en mysqli_* querys hebben verwijderd, hopelijk zien ze snel in dat dit fout is en voegen ze het opnieuw toe.
Want dan zou iedereen voor een behaalde tijd(2012?) de script geupdate moeten hebben, geloof mij dan wordt het CHAOS op het internet.., vooral de mensen die NIET weten hoe php werkt en of het script zelf gemaakt heeft gaat dit een groot probleem worden, eerst leek mij dat PHP6 alleen maar 'voordelen' had, tot nu dus. Maar er breken dan wel mooie tijden aan voor ons freelancers :) want dan is er een 'chronisch' tekort aan php-ers
Want dan zou iedereen voor een behaalde tijd(2012?) de script geupdate moeten hebben, geloof mij dan wordt het CHAOS op het internet.., vooral de mensen die NIET weten hoe php werkt en of het script zelf gemaakt heeft gaat dit een groot probleem worden, eerst leek mij dat PHP6 alleen maar 'voordelen' had, tot nu dus. Maar er breken dan wel mooie tijden aan voor ons freelancers :) want dan is er een 'chronisch' tekort aan php-ers
De mysql_* en mysqli_* functies verdwijnen niet, maar ze zitten niet meer in PHP ingebakken. Er zal een extensie voor geladen moeten worden. Veel hosts zullen dit heel lang blijven doen. We hebben het hier over de verre toekomst want PHP 6 is nog niet eens uit en het duurt rustig 3 of 4 jaar voordat het een beetje geaccepteerd is (PHP 5 is nu ook al 3,5 jaar stabiel te downloaden). Dus dit is juist een heel goed besluit van het PHP team. Je kan niet eeuwig achter blijven vanwege wat amateurscripts die straks niet meer compatible zijn. En de pro's die nog mysql_query() gebriuken upgraden wel.
Lange lijst reacties trouwens hier, dat is mooi!
Lange lijst reacties trouwens hier, dat is mooi!
@Kwastie: Ik mag toch hopen dat ze niet de mysql_-ellende er weer in gaan zetten, op die manier hou je de vooruitgang tegen. Gebruik gewoon PDO, wanneer je daar nu mee begint, dan ben je over 5 jaar echt wel klaar.
Ik geloof er niks van dat het een chaos wordt, de php3 scripts (en ouder) zijn ondertussen ook wel zo'n beetje uitgestorven. Hoeveel servers accepteren de REGISTER_GLOBALS nog? Dat zal nu met de overstap naar versie 5 ook snel afnemen, versie 5 wordt een beetje misbruikt om users te pushen deze ellende aan te passen. Ik verwacht met versie 6 hetzelfde te gaan zien.
Ik geloof er niks van dat het een chaos wordt, de php3 scripts (en ouder) zijn ondertussen ook wel zo'n beetje uitgestorven. Hoeveel servers accepteren de REGISTER_GLOBALS nog? Dat zal nu met de overstap naar versie 5 ook snel afnemen, versie 5 wordt een beetje misbruikt om users te pushen deze ellende aan te passen. Ik verwacht met versie 6 hetzelfde te gaan zien.
Mooie tut Erik! Eindelijk wordt het mensen met PHP6 een stuk moeilijker gemaakt om onveilige scripts te schrijven...
Wat betreft het stukje over de installatie van PHP6: WAMP2.0 heeft nu de mogelijkheid om addons toe te voegen waardoor je allerlei verschillende php, apache en mysql versies op je systeem kunt installeren, waaronder php6.0 dev.
Een kwestie van 1 klik op de knop om van php versie te wisselen, nadeel is dan wel weer dat dezelfde root gebruikt wordt. Grote voordeel voor veel mensen zal echter zijn dat het gewoon met een simpele installer geinstalleerd kan worden.
http://www.wampserver.com/en/add-ons.php
Wat betreft het stukje over de installatie van PHP6: WAMP2.0 heeft nu de mogelijkheid om addons toe te voegen waardoor je allerlei verschillende php, apache en mysql versies op je systeem kunt installeren, waaronder php6.0 dev.
Een kwestie van 1 klik op de knop om van php versie te wisselen, nadeel is dan wel weer dat dezelfde root gebruikt wordt. Grote voordeel voor veel mensen zal echter zijn dat het gewoon met een simpele installer geinstalleerd kan worden.
http://www.wampserver.com/en/add-ons.php
@pgFrank
Wat is er zo fout aan de mysql ellende? naar mijn mening werkt het bijna allemaal hetzelfde, (Mysql, firebird, postsql)
Wel ben ik zeer blij met het verwijderen van magic_quotes & register_global want het geeft meer problemen dan dat het uiteindelijk oplost.Want nu is de taal een stuk professioneler.
Maar ik wil nog wel even melden dat op de site van php duidelijk staat dat register globels word verwijderd, maar er staat niets over dat mysql_query weg gaat.
Wat is er zo fout aan de mysql ellende? naar mijn mening werkt het bijna allemaal hetzelfde, (Mysql, firebird, postsql)
Wel ben ik zeer blij met het verwijderen van magic_quotes & register_global want het geeft meer problemen dan dat het uiteindelijk oplost.Want nu is de taal een stuk professioneler.
Maar ik wil nog wel even melden dat op de site van php duidelijk staat dat register globels word verwijderd, maar er staat niets over dat mysql_query weg gaat.
Kwastie pgFrank verwijst meestal naar deze pagina en kan daarnaast nog een heleboel vertellen
@pgFrank (waarom zet je die niet in je profile, nu moest ik even zoeken ;))
@pgFrank (waarom zet je die niet in je profile, nu moest ik even zoeken ;))
Met PDO ben je niet meer gebonden aan 1 database, met mysql_query() of pg_query() in je code, zul je behalve de betrokken SQL ook alle functies in je php-code moeten aanpassen. En laat de ene set PHP-database-functies nu anders zijn dan de andere, dan kun je waarschijnlijk ook nog logica gaan aanpassen. Zie bv. het verschil tussen het aantal mysql- en pgSQL-functies in PHP. Met PDO heb je 1 set functies in PHP en dat is het dan. Per database kan de SQL dan nog verschillen, maar je hebt een complete scheiding tussen SQL en PHP tot je beschikking. Dat scheelt een enorme berg werk.
De specifieke PHP-functies kennen eveneens geen prepared statements, wat weer problemen/uitdagingen oplevert met beveiliging. Dat is nu net een onderwerp waar veel beginners grote moeite mee hebben.
Het gebruik van 1 database-classe (PDO) door alle PHP-gebruikers, k?n (maar hoeft dus zeker niet...) ook de veiligheid van deze classe ten goede komen. Ik vind het bijzonder handig dat de ?cht php-specialisten zich hiermee bezig houden en dat ik me geen zorgen hoef te maken over de kwaliteit en veiligheid van deze code. Met eigen code weet ik wel wat deze doet, maar om nu een expert in te huren om deze code eens op de pijnbank te leggen, dat is toch weer een ander verhaal. Ik hoop dan ook dat met PDO de professionaliteit van PHP flink omhoog gaat.
De specifieke PHP-functies kennen eveneens geen prepared statements, wat weer problemen/uitdagingen oplevert met beveiliging. Dat is nu net een onderwerp waar veel beginners grote moeite mee hebben.
Het gebruik van 1 database-classe (PDO) door alle PHP-gebruikers, k?n (maar hoeft dus zeker niet...) ook de veiligheid van deze classe ten goede komen. Ik vind het bijzonder handig dat de ?cht php-specialisten zich hiermee bezig houden en dat ik me geen zorgen hoef te maken over de kwaliteit en veiligheid van deze code. Met eigen code weet ik wel wat deze doet, maar om nu een expert in te huren om deze code eens op de pijnbank te leggen, dat is toch weer een ander verhaal. Ik hoop dan ook dat met PDO de professionaliteit van PHP flink omhoog gaat.
Geweldige Tutorial!!
Echt geweldig PHP word eindelijk weer "volwassen" (dat was het al geworden met php5)
Maar nu het zelfs namespaces gaan gebruiken net zo als Java & C++ of C#
dan kunnen we er zekker vanuit gaan dat PHP weer hellemaal terug gaat komen in de grote wereld!
Is er al een datum bekend waarop php6 volledig uitkomt ?
Echt geweldig PHP word eindelijk weer "volwassen" (dat was het al geworden met php5)
Maar nu het zelfs namespaces gaan gebruiken net zo als Java & C++ of C#
dan kunnen we er zekker vanuit gaan dat PHP weer hellemaal terug gaat komen in de grote wereld!
Is er al een datum bekend waarop php6 volledig uitkomt ?
@Webmakerij
Kan je de tijd nog herinneren dat ze net op sommige servers met PHP 5 begonnen? -> Standaard was nog PHP4 (klanten willen niet verplicht overstappen in een heel korte tijd) Je .php bestanden werden standaard als PHP4 geparsed. Wou je bijvoorbeeld voor een nieuwe pagina php5 gebruiken, gaf je extensie .php5 en dan werkte het goed. Deed je echter .php, werkte het niet.
Je kan wel met een .htacces de boel zo instellen (mocht je geen admin toegang hebben) dat die standaard met de PHP5 werkt. Got it?
Daarom heb je dus die genummerde extensies, om zelf te kunnen kiezen, en niet meteen verplicht over te moeten!
Kan je de tijd nog herinneren dat ze net op sommige servers met PHP 5 begonnen? -> Standaard was nog PHP4 (klanten willen niet verplicht overstappen in een heel korte tijd) Je .php bestanden werden standaard als PHP4 geparsed. Wou je bijvoorbeeld voor een nieuwe pagina php5 gebruiken, gaf je extensie .php5 en dan werkte het goed. Deed je echter .php, werkte het niet.
Je kan wel met een .htacces de boel zo instellen (mocht je geen admin toegang hebben) dat die standaard met de PHP5 werkt. Got it?
Daarom heb je dus die genummerde extensies, om zelf te kunnen kiezen, en niet meteen verplicht over te moeten!
@ de personen die menen dat je beter PDO kunt gebruiken dan mysqli:
PDO heeft zijn connectie met mysql database servers (nog) niet helemaal in orde, zo heb je bijvoorbeeld dat een connectie niet goed afgesloten wordt (en dus maar sluit door time-out) en bij servers waar veel mysql connecties gedaan worden zit je na een tijdje (paar minuten) met een database die geen nieuwe connecties meer toelaat (MAX_CONNECTION) en dus werken je scripts niet meer. Dit lijkt mij een grote bug, maar hoop dat dit snel opgelost wordt...
Dus ik gebruik voorlopig mysqli wat op php6 ook wel zal werken...
PDO heeft zijn connectie met mysql database servers (nog) niet helemaal in orde, zo heb je bijvoorbeeld dat een connectie niet goed afgesloten wordt (en dus maar sluit door time-out) en bij servers waar veel mysql connecties gedaan worden zit je na een tijdje (paar minuten) met een database die geen nieuwe connecties meer toelaat (MAX_CONNECTION) en dus werken je scripts niet meer. Dit lijkt mij een grote bug, maar hoop dat dit snel opgelost wordt...
Dus ik gebruik voorlopig mysqli wat op php6 ook wel zal werken...
Edit:
en zijn labels en goto (a.k.a spagetticode) niet verouderd en is OOP niet de nieuwe denkwijze van programmeren? of heb ik het hier zo zwaar fout?
@pgFrank: eigen ondervinding... Het is gewoon zo. Kan bij een enkele versie mysql of pdo zijn hoor. Maar ik had je dit al ergens op phphulp al eens verteld..
Edit:
Gevonden: http://www.phphulp.nl/forum/showtopic.php?id=40500&cat=15&replies=0 zie mijn tweede reactie in dat topic
@Hipska: Staat mij ook bij, maar ik kan er in de bugreports van PHP helemaal niks over vinden, er staat niet 1 PDO-gerelateerde bug genoteerd.
Daarnaast heb ik met een pgSQL-connectie de boel al wel eens flink lopen stressen, daarbij zijn geen problemen opgetreden. De boel bleef keurig bereikbaar, ook met maximaal honderd requests per seconde gedurende 1 uur (levert dan een maximaal een paar honderd queries per seconde op). Het probleem dat jij beschrijft, is voor mij niet herkenbaar.
Edit: Ik sluit wel altijd netjes de boel af, wellicht dat daar het verschil zit.
Daarnaast heb ik met een pgSQL-connectie de boel al wel eens flink lopen stressen, daarbij zijn geen problemen opgetreden. De boel bleef keurig bereikbaar, ook met maximaal honderd requests per seconde gedurende 1 uur (levert dan een maximaal een paar honderd queries per seconde op). Het probleem dat jij beschrijft, is voor mij niet herkenbaar.
Edit: Ik sluit wel altijd netjes de boel af, wellicht dat daar het verschil zit.
Leuek tutorial, alleen jammer van de nutteloze dingen zo te benadrukken.
Namespaces is leuk, maar komt al vanaf 5.3, niks met php6 meer te maken.
Het weghalen van wat instellingen is het enige echte belangrijke wat je hebt vermeld in de tutorial naar mijn mening.
PHP6 is absoluut geen nieuwe tag waard, maar wordt een tag om PHP 4 te doden en terecht.
Het allerbelangrijkste van PHP6 staat er jammer genoeg niet in, terwijl dat de belangrijkste verandering is in jaren van PHP, namelijk unicode support.
Ik ben 2 weken geleden naar een php6 conferentie geweest en iedereen was zeer ontevreden en teleurgesteld over PHP6, vooral niet sinds al 3 belangrijke dingen worden verschoven naar 5.3.
Wat ik miste op de conferentie was de verwijdering van mysql, zou ik je bron hiervan mogen? Ook graag de bron dat het over een paar maanden er misschien al is? Ik denk dat we blij mogen zijn als het nog in 2008 is.
Voor de rest petje af boor het schrijven en de moeite!
Namespaces is leuk, maar komt al vanaf 5.3, niks met php6 meer te maken.
Het weghalen van wat instellingen is het enige echte belangrijke wat je hebt vermeld in de tutorial naar mijn mening.
PHP6 is absoluut geen nieuwe tag waard, maar wordt een tag om PHP 4 te doden en terecht.
Het allerbelangrijkste van PHP6 staat er jammer genoeg niet in, terwijl dat de belangrijkste verandering is in jaren van PHP, namelijk unicode support.
Ik ben 2 weken geleden naar een php6 conferentie geweest en iedereen was zeer ontevreden en teleurgesteld over PHP6, vooral niet sinds al 3 belangrijke dingen worden verschoven naar 5.3.
Wat ik miste op de conferentie was de verwijdering van mysql, zou ik je bron hiervan mogen? Ook graag de bron dat het over een paar maanden er misschien al is? Ik denk dat we blij mogen zijn als het nog in 2008 is.
Voor de rest petje af boor het schrijven en de moeite!
1. Unicode staat in de reacties (ik had een pagina te weinig aangemaakt), dat is voor de gemiddelde programmeur hier niet het interessantste
2. Dat MySQL niet meer standaard in PHP zit kun je testen en ergens op een todo-list lezen. Er komt hier een extensie voor.
3. Over dat het er over een paar maanden misschien is; dat zou kunnen. Relatief begrip, geen bron voor nodig.
Daarnaast vind ik het apart dat je dit nutteloze dingen noemt. Ik schrijf een tutorial voor de gemiddelde programmeur, niet voor experts of mensen die naar conferenties gaan. Voor deze programmeurs zijn bovenstaande punten toch echt geen nutteloze dingen, maar juist de belangrijkste stappen.
Ik vind je reactie een typische tweakers.net-reactie. Volledig correct en volledig nutteloos. Je komt enkel met subjectieve beweringen zonder onderbouwingen en vraagt zelf naar bronnen. Je voegt feitelijk niets toe, behalve dat we nu weten dat jij op een conferentie bent geweest en iedereen PHP 6 als nutteloze stap ziet. Deze tutorial is objectief dus dat gaat buiten het bereik van deze tutorial. Ik verzoek je dan ook vriendelijk deze subjectieve punten te uiten op conferenties en niet op een forum waar mensen willen leren. Mocht je ze toch willen uiten, doe dat dan in het kader van het verbreden van de algemene kennis en niet als aanval op objectieve gegevens. Daar kan niemand iets mee. De discussie over het nut van PHP 6 mag van mij best gevoerd worden, graag zelfs, maar dan wel op het forum. Bij voorbaat dank.
2. Dat MySQL niet meer standaard in PHP zit kun je testen en ergens op een todo-list lezen. Er komt hier een extensie voor.
3. Over dat het er over een paar maanden misschien is; dat zou kunnen. Relatief begrip, geen bron voor nodig.
Daarnaast vind ik het apart dat je dit nutteloze dingen noemt. Ik schrijf een tutorial voor de gemiddelde programmeur, niet voor experts of mensen die naar conferenties gaan. Voor deze programmeurs zijn bovenstaande punten toch echt geen nutteloze dingen, maar juist de belangrijkste stappen.
Ik vind je reactie een typische tweakers.net-reactie. Volledig correct en volledig nutteloos. Je komt enkel met subjectieve beweringen zonder onderbouwingen en vraagt zelf naar bronnen. Je voegt feitelijk niets toe, behalve dat we nu weten dat jij op een conferentie bent geweest en iedereen PHP 6 als nutteloze stap ziet. Deze tutorial is objectief dus dat gaat buiten het bereik van deze tutorial. Ik verzoek je dan ook vriendelijk deze subjectieve punten te uiten op conferenties en niet op een forum waar mensen willen leren. Mocht je ze toch willen uiten, doe dat dan in het kader van het verbreden van de algemene kennis en niet als aanval op objectieve gegevens. Daar kan niemand iets mee. De discussie over het nut van PHP 6 mag van mij best gevoerd worden, graag zelfs, maar dan wel op het forum. Bij voorbaat dank.
Dat een tweaker reactie bij voorbaad slecht is kan ik niet snel bij.
Begrijp me niet verkeerd, ik weet dat hier gemiddelde programmeurs komen, daarom wil ik die mensen ook niet lekker maken met een broodjes ei.
De subjectieve beweringen zie ik absoluut niet in mijn commentaar en het is jammer dat je je zo opvat, het vragen naar bronnen is in dit vakgebied naar mijn mening ook een zeer belangrijk feit.
Het verwijzen naar een conferentie was deels voor de uitleg van unicode, ik denk juist dat het erg leuk is, ook voor de gemiddelde programmeur (mening) en deels om mijn onwetenheid van de mysql verwijdering te ondersteunen.
Ik vind het verwijderen van mysql namelijk een erg belangrijk feit en wil daar dus heel graag over lezen, het vragen van de bron was uit interesse en niet om je verhaal te checken.
Buiten alles om jammer dat de tutorial niet voor mensen is die naar conferenties gaan, zo vreemd fenomeen lijkt me dat niet.
In ieder geval excuses als je het verkeerd op heb gepakt, mijn toevoeging was meer bedoeld naar de experts die ook dit forum vaak lezen
Edit: als blijk van goede wil iets wat echt in php 6 komt en voor de gemiddelde phper misschien leuk is om te weten. Vanaf PHP6 wordt het ook mogelijk te foreachen op multi-dimensionale arrays. Voor mij echt een super toevoeging aangezien mijn foreaches in foreaches weleens ziek groot werden :P , voorbeeld:
ps. blijven hopen dat mysql wordt verwijderd.. ;)
Begrijp me niet verkeerd, ik weet dat hier gemiddelde programmeurs komen, daarom wil ik die mensen ook niet lekker maken met een broodjes ei.
De subjectieve beweringen zie ik absoluut niet in mijn commentaar en het is jammer dat je je zo opvat, het vragen naar bronnen is in dit vakgebied naar mijn mening ook een zeer belangrijk feit.
Het verwijzen naar een conferentie was deels voor de uitleg van unicode, ik denk juist dat het erg leuk is, ook voor de gemiddelde programmeur (mening) en deels om mijn onwetenheid van de mysql verwijdering te ondersteunen.
Ik vind het verwijderen van mysql namelijk een erg belangrijk feit en wil daar dus heel graag over lezen, het vragen van de bron was uit interesse en niet om je verhaal te checken.
Buiten alles om jammer dat de tutorial niet voor mensen is die naar conferenties gaan, zo vreemd fenomeen lijkt me dat niet.
In ieder geval excuses als je het verkeerd op heb gepakt, mijn toevoeging was meer bedoeld naar de experts die ook dit forum vaak lezen
Edit: als blijk van goede wil iets wat echt in php 6 komt en voor de gemiddelde phper misschien leuk is om te weten. Vanaf PHP6 wordt het ook mogelijk te foreachen op multi-dimensionale arrays. Voor mij echt een super toevoeging aangezien mijn foreaches in foreaches weleens ziek groot werden :P , voorbeeld:
Code (php)
1
2
3
4
5
2
3
4
5
$aMyArray = array(array(1,2),array(3,4));
foreach($aMyArray as $sKey = > list($val1, $val2))
{
echo($val1 . ' - ' . $val2);
}
foreach($aMyArray as $sKey = > list($val1, $val2))
{
echo($val1 . ' - ' . $val2);
}
ps. blijven hopen dat mysql wordt verwijderd.. ;)
Het lijkt er op dat het verplaatsen van de database-functies naar PECL eerst een 'ja' was maar nu toch weer ter discussie staat. Ik verwacht wel dat het zal gebeuren, aangezien je anders te veel lekke scripts krijgt doordat de meeste websites brak zijn geprogrammeerd. Je kunt dit in de todo-list zien van de PHP developers. Voor de tutorial maakt het niet, er staat duidelijk beschreven dat het nog mogelijk zal zijn via een extensie dus men kan zelf besluiten naar PDO te gaan of niet. Ik zal het een beetje aanpassen.
Verder wil ik deze tutorial blijven updaten naarmate er meer duidelijk wordt over PHP 6, want de ontwikkeling is nog bezig.
Het doel van deze tutorial is mensen alvast te laten zien waar men in de toekomst mee te maken krijgt en je ziet dat nu heel veel mensen eens gaan kijken naar PDO en dat soort functies. Dat doel is bereikt.
Sorry voor m'n verdediging Joep maar het kwam over als een 'ik weerleg even alles'-reactie die in dit soort gevallen vrij makkelijk zijn, aangezien alles nog onder voorbehoud is.
Edit: dat soort dingen zoals die foreach zou ik graag toevoegen aan de tutorial, ik zal Bas vragen of hij pagina's kan aanmaken om het uit te breiden. Misschien flauw, maar heb je daar toevallig een bron van? Dan kan ik er een stukje tekst over schrijven. Als jij anders een pagina zou willen schrijven Joep dan nodig ik je daar bij deze voor uit, dan voeg ik die via Bas toe en link in op die pagina naar jouw profiel. Dan hebben we het tenminste centraal staan.
Verder wil ik deze tutorial blijven updaten naarmate er meer duidelijk wordt over PHP 6, want de ontwikkeling is nog bezig.
Het doel van deze tutorial is mensen alvast te laten zien waar men in de toekomst mee te maken krijgt en je ziet dat nu heel veel mensen eens gaan kijken naar PDO en dat soort functies. Dat doel is bereikt.
Sorry voor m'n verdediging Joep maar het kwam over als een 'ik weerleg even alles'-reactie die in dit soort gevallen vrij makkelijk zijn, aangezien alles nog onder voorbehoud is.
Edit: dat soort dingen zoals die foreach zou ik graag toevoegen aan de tutorial, ik zal Bas vragen of hij pagina's kan aanmaken om het uit te breiden. Misschien flauw, maar heb je daar toevallig een bron van? Dan kan ik er een stukje tekst over schrijven. Als jij anders een pagina zou willen schrijven Joep dan nodig ik je daar bij deze voor uit, dan voeg ik die via Bas toe en link in op die pagina naar jouw profiel. Dan hebben we het tenminste centraal staan.
Hey Erik, staat in de dev meeting..
http://www.php.net/~derick/meeting-notes.html
ook op phpbuilder enzo..
Wil er graag wat over schrijven, dan schrijf ik er misschien meteen een old en new stukje bij, dan is het misschien zelfs nog interessant voor mensen die nog niet veel met foreach werkten.
mvg Joep
http://www.php.net/~derick/meeting-notes.html
ook op phpbuilder enzo..
Wil er graag wat over schrijven, dan schrijf ik er misschien meteen een old en new stukje bij, dan is het misschien zelfs nog interessant voor mensen die nog niet veel met foreach werkten.
mvg Joep
Is er voor ons beginners een duidelijke lijst van wat wel en wat zeker echt totaal maar dan ook helemaal niet meer voorkomende scripts zullen zijn.
Ik hoor het graag want ben net goed opweg gebruikte ook al de register globals niet.. wat er nu voor mij nieuw uitziet is de PDO voor sql....
Ik kan aan de slag....
Bedankt voor de info
Ik hoor het graag want ben net goed opweg gebruikte ook al de register globals niet.. wat er nu voor mij nieuw uitziet is de PDO voor sql....
Ik kan aan de slag....
Bedankt voor de info
Hey Endy geen paniek, het duurt allemaal nog eventje voor het misschien verdwijnt.
Het werken met PDO is zeker iets wat je je volgende stap mag noemen, net zoals register_globals ;)
Voor de rest valt het op zich wel mee, maar wat Erik in deze tut schrijft zijn zeker wel de belangrijkste dingen die beginners en of php4 gebruikers moeten weten
Het werken met PDO is zeker iets wat je je volgende stap mag noemen, net zoals register_globals ;)
Voor de rest valt het op zich wel mee, maar wat Erik in deze tut schrijft zijn zeker wel de belangrijkste dingen die beginners en of php4 gebruikers moeten weten
Ik voorspel dat unicode nog wel wat "problemen" hier en daar gaat opleveren, zeker waneer je binair, of met sockets werkt. strlen() is plotseling veel minder vanzelfsprekend. Gelukkig is er (al in PHP5.3 meen ik mij te herinneren) het bin type toegevoegd, zodat je strings als niet-utf8 kan typecasten, zodat ze precies hetzelfde werken als dat ze nu doen. Wordt nog interessant denk ik. (Plak me niet vast op de details, ik meende dit gelezen te hebben, kan zo snel niet de bron terugvinden)
Wat ik eigenlijk nog altijd wel eens zou willen zien is een alternatieve notatie voor create_function. Zeg maar een beetje meer a la javascript, al zullen de closures het nooit halen, maar daar kan ik mee leven. Het lijkt me mooi als er een soort Javascript & Ruby on Rails achtige notatie mogelijk is, waarbij je veel meer werkt met callbacks dan met lussen. Al is het voor de mensen die dat zoeken misschien wel gewoon beter over te stappen. En toch zou ik anonieme functies zonder eval-trekjes nog altijd een leuke toevoeging vinden.
Er komt trouwens met 5.3 al een nieuwe mysql-driver, mysqlnd. Volgens de maker (opschepper?) is die aanzienlijk sneller, en kan je hem compleet naar eigen wens optimaliseren. Klinkt als een leuk iets voor de grote sites die met MySQL werken.
Wat ik eigenlijk nog altijd wel eens zou willen zien is een alternatieve notatie voor create_function. Zeg maar een beetje meer a la javascript, al zullen de closures het nooit halen, maar daar kan ik mee leven. Het lijkt me mooi als er een soort Javascript & Ruby on Rails achtige notatie mogelijk is, waarbij je veel meer werkt met callbacks dan met lussen. Al is het voor de mensen die dat zoeken misschien wel gewoon beter over te stappen. En toch zou ik anonieme functies zonder eval-trekjes nog altijd een leuke toevoeging vinden.
Er komt trouwens met 5.3 al een nieuwe mysql-driver, mysqlnd. Volgens de maker (opschepper?) is die aanzienlijk sneller, en kan je hem compleet naar eigen wens optimaliseren. Klinkt als een leuk iets voor de grote sites die met MySQL werken.
Ik zie hier een enorme verbetering. Ik werk al vanaf dat PHP5 uitkwam maar eigenlijk nooit met OOP/PDO gewerkt(op wat kleine voorbeeldjes na). Ik zal dus eens gaan beginnen met OOP/PDO straks. Ik snap eigenlijk nog niet helemaal het MVC principe maar dit is denk ik meer iets om een topic over te openen.
Ik heb 4 of 5 jaar geleden een keer gedacht van: iets van goto zou handig zijn. Dat zegt genoeg, toen was ik nog een beginner. Nu gaat het alleen maar leiden tot dramatische, onoverzichtelijke code dat niet meer te debuggen is. PHP heeft duidelijk de keuze gemaakt zich steeds minder te interesseren in beginners en het niveau van beginners; men gaat er vanuit dat je goed snapt dat je zoiets alleen heel voorzichtig moet gebruiken. Zelfde verhaal met het verwijderen van magic_quotes, men gaat er vanuit dat je het zelf beveiligt. In de praktijk gaat dit heel veel problemen opleveren, maar dat is niet de fout van PHP maar van de programmeur. Het wordt in ieder geval een interessante toekomst. Het probleem is namelijk dat de meeste PHP programmeurs (amateurs) geen ervaring hebben met andere programmeertalen en kinderen tussen de 12 en 18 zijn. Bijna die hele groep krijgt een probleem. Ik kan er zelf wel om lachen, want over 5 jaar gaan potenti?le klanten alleen nog maar naar professionals omdat de anderen duidelijk geen kennis van beveiliging hebben. Het zou ook kunnen dat iedereen juist beter wordt en de beveiliging beter wordt, maar dat zal wel wat jaartjes duren. We wachten af...
Hmm, is magic_quotes er niet juist uitgehaald omdat het de horror van addslashes met zich meebracht? Daarnaast lijkt met mij met PDO & statements niet langer nodig om na te denken over escapen, althans, zolang mensen niet PDO::query gaan gebruiken.
Nu nog een vergelijkbare oplossing voor HTML om XSS te voorkomen, of een soort van ingebakken HTML purifier en alle standaard lekken zijn zo'n beetje gedicht. En daarmee wordt het leven weer wat makkelijker, juist voor de beginners.
Nu nog een vergelijkbare oplossing voor HTML om XSS te voorkomen, of een soort van ingebakken HTML purifier en alle standaard lekken zijn zo'n beetje gedicht. En daarmee wordt het leven weer wat makkelijker, juist voor de beginners.
Ik zag heel toevallig op phpfreakz, een ander bericht voor bijkomen.
Hier zijn de meeste 'profs' iets minder te spreken over PDO?
Je moet het zelf maar ff lezen:
-> http://www.phpfreakz.nl/forum.php?forum=1&iid=1081337
Hier zijn de meeste 'profs' iets minder te spreken over PDO?
Je moet het zelf maar ff lezen:
-> http://www.phpfreakz.nl/forum.php?forum=1&iid=1081337
Namespaces zijn ook nog niet helemaal helder volgens mij. Zie dit voorbeeld waarbij en meerdere klassen zijn met dezelfde naam, maar een andere namespace. (voor de goede orde, DateTime is al een bestaande klasse, in de ::-namespace, de global namespace.) Komt nog niet echt overeen met het KISS-principe van PHP naar mijn idee.
Als ze nu gewoon dezelfde methode als Javascript, namelijk met 'with(namespace) { commando's }' hadden gebruikt, was het allemaal zoveel simpeler geweest :P
edit: En de dag daarop post diegene die eerst klaagde over de namespaces een verklaring, waardoor het allemaal weer wat helderder wordt. Valt dus allemaal wel weer mee :)
Als ze nu gewoon dezelfde methode als Javascript, namelijk met 'with(namespace) { commando's }' hadden gebruikt, was het allemaal zoveel simpeler geweest :P
edit: En de dag daarop post diegene die eerst klaagde over de namespaces een verklaring, waardoor het allemaal weer wat helderder wordt. Valt dus allemaal wel weer mee :)
Wordt er nog wat veranderd ten aanzien van types van variabelen en functies? Dat PHP een weak-typed taal is heb ik altijd wel als een minpuntje ervaren. Je zou gewoon type's moeten kunnen declareren, bijvoorbeeld zo:
public boolean $isMale;
of in een methode/functie:
public function int getAge() {
//...
}
of zo:
public int function getAge() {
//...
}
Dat staat veel mooier dan een variabele waar je zowat alles in kan opslaan. Ik had gehoopt dat dat er met PHP 6 eindelijk in zou komen.
Het liefst had ik ook gezien dat ze dat hele function keyword eruit slopen. Gewoon Java style. Dat programmeert mijns inziens het beste.
Dat goto/label verhaal vind ik echt onzin. Enorm lelijk om dat te gebruiken. Zoals meer mensen hierboven hebben gezegd is het met de bestaande control structures (if, else etc..) prima mogelijk om alle denkbare programmeerstructuren te realiseren.
public boolean $isMale;
of in een methode/functie:
public function int getAge() {
//...
}
of zo:
public int function getAge() {
//...
}
Dat staat veel mooier dan een variabele waar je zowat alles in kan opslaan. Ik had gehoopt dat dat er met PHP 6 eindelijk in zou komen.
Het liefst had ik ook gezien dat ze dat hele function keyword eruit slopen. Gewoon Java style. Dat programmeert mijns inziens het beste.
Dat goto/label verhaal vind ik echt onzin. Enorm lelijk om dat te gebruiken. Zoals meer mensen hierboven hebben gezegd is het met de bestaande control structures (if, else etc..) prima mogelijk om alle denkbare programmeerstructuren te realiseren.
Ik denk dat we eerst eens moeten gaan kijken naar php5.3 met alle veranderingen voordat we naar 6 gaan...
namespaces, mysqlnld, static magic functions... Is al een hele stap in de richting... Om over de rest nog maar te zwijgen...
Uiteraard blijven we het nieuws volgen en anticipeer ik me alvast...
namespaces, mysqlnld, static magic functions... Is al een hele stap in de richting... Om over de rest nog maar te zwijgen...
Uiteraard blijven we het nieuws volgen en anticipeer ik me alvast...
Spl_Types geeft je static typing, maar dan zonder de syntax sugar. Dan moet je maar in Java gaan programmeren...
Het zou ideaal zijn als je net als in Java de types ook overal kan aangeven. Net als dat je public function foo(Type $foo) kan doen; dat zou ik overal willen.
Voordeel van PHP t.o.v. Java vind ik dat je vrij snel en makkelijk kan testen en debuggen en dat je niet voor ??n simpel dingetje altijd 30 objecten nodig hebt (moet je maar eens kijken hoe bijv. SOAP werkt in Java). Maar het hele type(loos)-verhaal in PHP is wel het grootste nadeel, sowieso. Vooral in organisaties waar je met meer dan ??n persoon aan een project werkt is het hel als je niet weet wat voor type een variabele is.
Voordeel van PHP t.o.v. Java vind ik dat je vrij snel en makkelijk kan testen en debuggen en dat je niet voor ??n simpel dingetje altijd 30 objecten nodig hebt (moet je maar eens kijken hoe bijv. SOAP werkt in Java). Maar het hele type(loos)-verhaal in PHP is wel het grootste nadeel, sowieso. Vooral in organisaties waar je met meer dan ??n persoon aan een project werkt is het hel als je niet weet wat voor type een variabele is.
Inderdaad, je moet met de naamgeving van je variabelen in een groot project rekening houden met misverstanden die kunnen ontstaan. Eenduidige en duidelijke naamgeving dragen daar nu toe bij. Overigens verandert dat niet perse wanneer je nu wel "type-casting" toepast. De waarde moet wel een integer zijn, maar iemand komt daarachter door:
- op te zoeken waar die variabele gecast is
- door te proberen de fout te bekijken
- hopelijk tzt dat een programma ook meteen aangeeft welk type het is
- vragen aan degene die die variabele voor het eerst heeft gebruikt
Dus ook dan blijft de naamgeving nog belangrijk, gewoon omdat het veel eenvoudiger is als je in 1 oogopslag ziet wat voor variabele type het is.
- op te zoeken waar die variabele gecast is
- door te proberen de fout te bekijken
- hopelijk tzt dat een programma ook meteen aangeeft welk type het is
- vragen aan degene die die variabele voor het eerst heeft gebruikt
Dus ook dan blijft de naamgeving nog belangrijk, gewoon omdat het veel eenvoudiger is als je in 1 oogopslag ziet wat voor variabele type het is.
In Java pas je ook geen type casting toe. Je moet gewoon verplicht het type aangeven bij het defini?ren van een variabele. Zo kan ook je IDE meteen achterhalen wat het is en hoe het werkt. Dus je cast 'm niet, je kunt geen ander type aan de variabele geven. Je merkt bij Java bij het compileren dus al of alles goed gaat, omdat alle types moeten kloppen.
Je kunt in Java ook wel type casten, maar dat heeft hier niets mee te maken.
Je kunt in Java ook wel type casten, maar dat heeft hier niets mee te maken.
@Erik
Ik noem ook de optie dat de tool gewoon aangeeft wat voor type het is, als je nu een integer in een variabele zet, dan zie je dat niet als je de variabele aanroept, of wil veranderen. Dat moet dan wel gebeuren.
Het is ook sneller als je meteen ziet wat voor type inhoud je var moet hebben toch, of zit ik nu gewoon helemaal in een verkeerde denkrichting?
@Gamer
Goto in plaats van een switch? Niet doen, je krijgt dan wel heel rare constructies, onderstaand is een fictief voorbeeld, maar dan is een switch toch veel handiger:
Ik noem ook de optie dat de tool gewoon aangeeft wat voor type het is, als je nu een integer in een variabele zet, dan zie je dat niet als je de variabele aanroept, of wil veranderen. Dat moet dan wel gebeuren.
Het is ook sneller als je meteen ziet wat voor type inhoud je var moet hebben toch, of zit ik nu gewoon helemaal in een verkeerde denkrichting?
@Gamer
Goto in plaats van een switch? Niet doen, je krijgt dan wel heel rare constructies, onderstaand is een fictief voorbeeld, maar dan is een switch toch veel handiger:
Zulke constructies kan je in alle programmeertalen maken en ook in php op andere manieren een oneindige loop. Je browser zal na enige tijd kappen tenminste ff. Met een redirect naar redirect bv ook, ff geeft dan gelijk aan dat er een oneindige loop plaatst vindt en dus kapt ie t af.
Zeker weet je t natuurlijk niet, maar het lijkt me gewoon de verantwoordelijkheid van de programmeur.
Zeker weet je t natuurlijk niet, maar het lijkt me gewoon de verantwoordelijkheid van de programmeur.
Er vanuit gaande dat sommige webhosts nu nog 4.x durven te draaien, zou ik me niet gek veel zorgen maken Wesley ;) Voor nieuwe projecten is het uiteraard leuk als je gelijk gebruik maakt van de enorme vooruitgang van php6, maar oude projecten kunnen nog prima blijven leven op hosts met 5.x / 4.x (al mogen de hosts die nog 4.x draaien zich schamen)
Het is een tijd geleden dat ik de tutorial gelezen heb, dus weet het niet zeker, maar phpErik besprak de "draft", hoe het er ongeveer uit ging zien. php6 verschijnt 3 jaar na de uitgave van deze tutorial, en er is heel wat veranderd.
Het is een tijd geleden dat ik de tutorial gelezen heb, dus weet het niet zeker, maar phpErik besprak de "draft", hoe het er ongeveer uit ging zien. php6 verschijnt 3 jaar na de uitgave van deze tutorial, en er is heel wat veranderd.
Wauw wat een veranderingen, ik heb hier gekeken:
http://php.net/manual/en/book.pdo.php
Blijven de querys hetzelfde?
like:
SELECT * FROM persons
En blijft if{}elseif{}else{} nog bestaan? Anders vormt zich een groot drama aangezien er minstens 2000x if..else in mijn project staan in 1000 bestanden.
Hoewel dit een drama word kan ik niet wachten ;3 By the way download is broken?
http://php.net/manual/en/book.pdo.php
Blijven de querys hetzelfde?
like:
SELECT * FROM persons
En blijft if{}elseif{}else{} nog bestaan? Anders vormt zich een groot drama aangezien er minstens 2000x if..else in mijn project staan in 1000 bestanden.
Hoewel dit een drama word kan ik niet wachten ;3 By the way download is broken?
Deze tutorial is 3 jaar geleden opgezet maar ik hoor nog steeds weinig van PHP6, betekend dit dat ik uit moet kijken met het opzetten van mijn site (ik wil hem in een paar maanden in de lucht hebben), omdat PHP6 eraan komt?
Als ik de tutorial doorlees maak ik me niet zo heel veel zorgen (PDO is geloof ik nu al beschikbaar (5.3.5), dus dat is gewoon kwestie van alleen PDO's gebruiken, daarnaast zijn namespaces gewoon handig en zullen die vermoedelijk niets breken, toch?), maar ik vraag het graag nog even na bij de kenners ;)
'Men is gewend dat waarden uit $_GET en $_POST automatisch geëscaped zijn' Wat houdt geëscaped hier in? (Google helpt me niet xD).
Als ik de tutorial doorlees maak ik me niet zo heel veel zorgen (PDO is geloof ik nu al beschikbaar (5.3.5), dus dat is gewoon kwestie van alleen PDO's gebruiken, daarnaast zijn namespaces gewoon handig en zullen die vermoedelijk niets breken, toch?), maar ik vraag het graag nog even na bij de kenners ;)
'Men is gewend dat waarden uit $_GET en $_POST automatisch geëscaped zijn' Wat houdt geëscaped hier in? (Google helpt me niet xD).
Je hoeft je geen 'zorgen' te maken over de nieuwe versie. Ze zijn al heel lang bezig met een nieuwe versie, maar erg hard zal die niet komen. Als je terug kijkt in de geschiedenis dan zie je dat eigenlijk bij elke nieuwe major versie de hele engine opnieuw geschreven is. Voor php 6 zie ik dat nog niet snel gebeuren. Ook zijn veel die op het programma stonden voor php 6, zoals bijvoorbeeld namespaces, al in php 5.3.5 zitten.
Ook zal het gewoon zo zijn dat de meeste dingen die in php 5 werken ook gewoon in php 6 zullen werken. Waaronder mysql, mysql gaat niet verwijderen (desalniettemin raad ik wel pdo aan).
Een aantal dingen die in php 4 werken zullen zeker weten niet meer werken in php 6, maar php 4 is dan dus ook al steen oud. Als je nu nog php 4 gebruikt loop je eigenlijk al een paar jaar achter (wat in de IT wereld veel is).
Verder zullen er inderdaad een aantal dingen die werken in php 5 niet meer werken in php 6, maar die staan ook al aangekondigd, zoals bijvoorbeeld safe_mode.
Dat $_GET en $_POST geëscaped zijn wordt denk ik magic_quotes mee bedoelt, maar zoals je kunt zien word nu al sterk afgeraden om die te gebruiken.
Ook zal het gewoon zo zijn dat de meeste dingen die in php 5 werken ook gewoon in php 6 zullen werken. Waaronder mysql, mysql gaat niet verwijderen (desalniettemin raad ik wel pdo aan).
Een aantal dingen die in php 4 werken zullen zeker weten niet meer werken in php 6, maar php 4 is dan dus ook al steen oud. Als je nu nog php 4 gebruikt loop je eigenlijk al een paar jaar achter (wat in de IT wereld veel is).
Verder zullen er inderdaad een aantal dingen die werken in php 5 niet meer werken in php 6, maar die staan ook al aangekondigd, zoals bijvoorbeeld safe_mode.
Dat $_GET en $_POST geëscaped zijn wordt denk ik magic_quotes mee bedoelt, maar zoals je kunt zien word nu al sterk afgeraden om die te gebruiken.
Oke bedankt, eigenlijk snap ik het niet komt php6 nog wel uit?
by the way:
Ik gebruik inderdaad veel if..elses maar er is geen enkele pagina die 7 if..elses gebruikt op één onderwerp of meer, na 7 gebruik ik namelijk een switch. Ik heb gewoon veel files omdat ik een cms aan het maken ben. Maar mocht if...else veranderd worden zou dat een groot probleem worden voor mij...
by the way:
Ik gebruik inderdaad veel if..elses maar er is geen enkele pagina die 7 if..elses gebruikt op één onderwerp of meer, na 7 gebruik ik namelijk een switch. Ik heb gewoon veel files omdat ik een cms aan het maken ben. Maar mocht if...else veranderd worden zou dat een groot probleem worden voor mij...
Om te reageren heb je een account nodig en je moet ingelogd zijn.
Inhoudsopgave
- Installatie PHP 6 naast PHP 5
- Inleiding
- Bye@ Register_globals, magic_quotes, mysql_query()
- Namespaces (vanaf PHP 5.3)
- Label en goto
- Verkorte ifsetor() (vanaf PHP 5.3)
- Static keyword (vanaf PHP 5.3?)
Labels
- Geen tags toegevoegd.
PHP hulp
0 seconden vanaf nu