{"id":2943,"date":"2013-05-03T11:32:06","date_gmt":"2013-05-03T11:32:06","guid":{"rendered":"http:\/\/www-new.henselhosting.nl\/?p=2943"},"modified":"2021-03-03T05:31:08","modified_gmt":"2021-03-03T04:31:08","slug":"vooruitblik-op-php6-highlights","status":"publish","type":"post","link":"https:\/\/www.henselhosting.nl\/blog\/vooruitblik-op-php6-highlights\/","title":{"rendered":"Vooruitblik op PHP6 (highlights)"},"content":{"rendered":"<p>Hoewel het nog wel even duurt voordat PHP v6 zal worden gaan gebruikt, is het goed om op de hoogte te zijn van de ontwikkelingen op dit gebied. Immers, dan kun je alvast zorgen dat alle code die je nu schrijft blijft werken in PHP6, of in ieder geval weinig aanpassingen vereist. We zijn er zelf in ieder geval al voor je mee bezig, en bieden sinds kort <strong>PHP6 webhosting<\/strong> zodat zodat je hier alvast op kunt testen.<\/p>\n<p>Met de overgang naar PHP6 zullen verscheidene functies, die eigenlijk al lang als onveilig of onhandig beschouwd worden eindelijk definitief verwijderd worden. Dat zorgt er voor dat sommige oude PHP scripts, die nog relatief makkelijk naar PHP5 geport konden worden nu echt niet meer zullen werken. Maar wie heeft functies als register_globals nu niet al lang achter zich gelaten?<\/p>\n<h2>Nieuwe functionaliteit<\/h2>\n<h3>Unicode<\/h3>\n<p>Volledige unicode ondersteuning is het paradepaardje van PHP6. Unicode (bijvoorbeeld in de vorm van UTF-16) is een manier om karakters te kunnen tonen van alle geschreven talen. In voorgaande PHP versies was vaak een lastig karwei om met iets anders dan ASCII (alleen engelse karakters) te werken.<\/p>\n<p>PHP6 komt met twee type strings. Standaard zullen nu alle strings als unicode worden geinterpreteerd, maar je kunt deze ook als binaire string defini\u00ebren.<\/p>\n<p>Hieronder een heel simpel voorbeeld waarin we PHP de lengte van de string laten bepalen. PHP5 heeft geen weet van &#8216;karakters&#8217;, enkel van bytes:<\/p>\n<pre class=\"brush:php\">$string = \"voil\u00e1\";\r\necho \"$string\".\"! De lengte is \".strlen(\"$string\");<\/pre>\n<p>In PHP5 krijg je dan terug:<\/p>\n<blockquote><p>Voil\u00e1! De lengte is 6<\/p><\/blockquote>\n<p>In PHP6 is dit echter een unicode string:<\/p>\n<blockquote><p>Voil\u00e1! De lengte is 5<\/p><\/blockquote>\n<h3>Namespaces<\/h3>\n<p>Met namespaces pakt PHP6 het probleem aan dat de naamgeving van classes van verschillende libraries (of je eigen code) elkaar soms hindert. Dat probleem kon je voorheen alleen voorkomen door het gebruik van ellenlange en onoverzichtelijke namen voor classes. Met namespaces kun je PHP code groeperen, zodat dezelfde naam voor een functie of class niet botst met die uit een ander package.<\/p>\n<p>Als je niet bekent bent met dit concept bekijk dan het volgende voorbeeld, waarin namespaces gebruikt worden. In dit voorbeeld zie je dat dezelfde class en functie namen twee keer worden gebruikt, en dat is mogelijk doordat ze hun eigen namespace hebben.<\/p>\n<p>example_ns.php:<\/p>\n<pre class=\"brush:php\">&lt;?php\r\nrequire 'lib1.php';\r\nrequire 'lib2.php';\r\nlib1\\nameOfClass::helloWorld();\r\necho \"&lt;br&gt;\";\r\nlib2\\nameOfClass::helloWorld();\r\n?&gt;<\/pre>\n<p>lib1.php:<\/p>\n<pre class=\"brush:php\">&lt;?php\r\nnamespace lib1;\r\n\u00a0\u00a0class nameOfClass{\r\n\u00a0\u00a0\u00a0\u00a0function helloWorld(){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Hello from \". __NAMESPACE__ .\" namespace\";\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0}\r\n?&gt;<\/pre>\n<p>lib2.php:<\/p>\n<pre class=\"brush:php\">&lt;?php\r\nnamespace lib2;\r\n\u00a0\u00a0class nameOfClass{\r\n\u00a0\u00a0\u00a0\u00a0function helloWorld(){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Hello from \". __NAMESPACE__ .\" namespace\";\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0}\r\n?&gt;<\/pre>\n<h2>Niet meer te gebruiken<\/h2>\n<h3>Magic quotes<\/h3>\n<p>Deze functie was bedoeld om SQL injecties tegen te gaan, door &#8220;achter de schermen&#8221; input schoon te maken door het escapen van quotes, dubbele quotes etc, zonder dat je als developer hier iets voor hoefde te doen (wat dus vooral onwetende of beginnende developers hielp). Echter leverde dit <a href=\"&lt;a href=\">&#8220;&gt;nogal wat problemen op<\/a> en is besloten dat PHP programmeurs hier zelf mee om moeten gaan. Zorg dus zelf voor voor goede input checks. Daar is bijvoorbeeld de functie <a href=\"http:\/\/th.php.net\/manual\/en\/function.mysql-real-escape-string.php\">mysql_real_escape_string<\/a> voor bedoeld.<\/p>\n<h3>Safe_mode<\/h3>\n<p>Voor veel developers zal het waarschijnlijk een opluchting zijn; safe_mode zal verdwijnen in PHP6. Dit zorgde er onder andere voor dat je enkel bestanden kon openen die van dezelfde gebruiker waren als het PHP script. Standaard stond\/staat dit bij veel webhosters aan om de veiligheid te verhogen, zo ook bij ons (je kunt dit bij ons <a href=\"http:\/\/www.managedomain.nl\">uitzetten via je CCC<\/a>). Er is echter besloten dat het <a href=\"http:\/\/php.net\/~derick\/meeting-notes.html#safe-mode\">ten onrechte de indruk gaf dat dit PHP veilig maakte<\/a>, en de veiligheid beter op webserver\/OS beheer kan worden uitgevoerd.<\/p>\n<h3>Register globals<\/h3>\n<p>Deze functie is uit PHP6 verdwenen. Dit zal geen verrassing zijn. Het gebruik van deze functionaliteit is al sinds lange tijd afgeraden (vanaf PHP 4.2), en staat standaard uit in de PHP configuratie.<\/p>\n<h2>Tot slot<\/h2>\n<p>Dit is slechts een greep uit <a href=\"http:\/\/php.net\/~derick\/meeting-notes.html\">de veranderingen<\/a> die PHP6 met zich meebrengt, en wijzigingen zijn nog te verwachten. We houden je op de hoogte!<\/p>\n<p>Als je interesse hebt in <strong>PHP6 Alpha release webhosting<\/strong>, houd dan onze nieuwsbrief in de gaten. Je kunt ook direct <a href=\"\/contact\/\">contact met ons opnemen<\/a> als je geen klant bent.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoewel het nog wel even duurt voordat PHP v6 zal worden gaan gebruikt, is het goed om op de hoogte te zijn van de ontwikkelingen op dit gebied. Immers, dan kun je alvast zorgen dat alle code die je nu schrijft blijft werken in PHP6, of in ieder geval weinig aanpassingen vereist. We zijn er&hellip; <a class=\"more-link\" href=\"https:\/\/www.henselhosting.nl\/blog\/vooruitblik-op-php6-highlights\/\">Continue reading <span class=\"screen-reader-text\">Vooruitblik op PHP6 (highlights)<\/span><\/a><\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[142,185],"class_list":["post-2943","post","type-post","status-publish","format-standard","hentry","category-blog","tag-php","tag-update","entry"],"_links":{"self":[{"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/posts\/2943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/comments?post=2943"}],"version-history":[{"count":3,"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/posts\/2943\/revisions"}],"predecessor-version":[{"id":8091,"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/posts\/2943\/revisions\/8091"}],"wp:attachment":[{"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/media?parent=2943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/categories?post=2943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.henselhosting.nl\/blog\/wp-json\/wp\/v2\/tags?post=2943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}