Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 28 reacties
Bron: PHP.net, submitter: Enlightenment

De makers van de PHP: Hypertext Preprocessor berichtten ons dat er een nieuwe beta versie beschikbaar is van de gelijknamige scripttaal. Daarmee zijn we aangekomen bij versienummer 5.0.0 beta 1. Een van de belangrijkste wijzigingen is de overstap naar versie 2 van de Zend Engine, en ook de XML ondersteuning heeft een flinke onderhoudsbeurt gehad. Het complete changelog ziet er als volgt uit:

  • Switch to using Zend Engine 2, which includes numerous engine level improvements. A full list is available at http://www.php.net/zend-engine-2.php.
  • The SQLite (http://www.hwaci.com/sw/sqlite/) extension is now bundled and enabled by default. (Wez, Marcus, Tal)
  • Improved the speed of internal functions that use callbacks by 40% due to a new internal fast_call_user_function() function. (Sterling)
  • Completely Overhauled XML support (Rob, Sterling, Chregu, Marcus)
    • Brand new Simplexml extension
    • New DOM extension
    • New XSL extension
    • Moved the old DOM-XML and XSLT extensions to PECL
    • ext/xml can now use both libxml2 and expat to parse XML
    • Removed bundled expat
  • Removed the bundled MySQL client library. (Sterling)
  • New php.ini options:
    • "session.hash_function" and "session.hash_bits_per_character". (Sascha)
    • "mail.force_extra_paramaters". (Derick)
    • "register_long_arrays". (Zeev)
  • Improved the streams support: (Wez, Sarah, Ilia)
    • Improved performance of readfile(), fpassthru() and some internal streams operations under Win32.
    • stream_socket_client() - similar to fsockopen(), but more powerful.
    • stream_socket_server() - Creates a server socket.
    • stream_socket_accept() - Accept a client connection.
    • stream_socket_get_name() - Get local or remote name of socket.
    • stream_copy_to_stream()
    • stream_get_line() - Reads either the specified number of bytes or until the ending string is found.
    • Added context property to userspace streams object.
    • Added generic crypto interface for streams (supports dynamic loading of OpenSSL)
    • Added lightweight streaming input abstraction to the Zend Engine scanners to provide uniform support for include()'ing data from PHP streams across all platforms.
    • Added 'string.base64' stream filter.
    • Renamed stream_register_wrapper() to stream_wrapper_register().
  • Improved the GD extension: (Pierre-Alain Joye, Ilia)
    • imagefilter() - Apply different filters to image. (Only available with bundled GD library)
    • Antialiased drawing support:
      • imageantialias() - (de)active antialias
      • imageline() and imagepolygon() antialias support
  • Changed the length parameter in fgetss() to be optional. (Moriyoshi)
  • Changed ini parser to allow for handling of quoted multi-line values. (Ilia)
  • Changed get_extension_funcs() to return list of the built-in Zend Engine functions if "zend" is specified as the module name. (Ilia)
  • Changed array_search() to accept also objects as a needle. (Moriyoshi)
  • Changed ext/mcrypt to require libmcrypt version 2.5.6 or greater. (Derick)
  • Changed uniqid() parameters to be optional and allow any prefix length. (Marcus)
  • Added new iconv functions. (Moriyoshi)
    • iconv_strlen()
    • iconv_substr()
    • iconv_strpos()
    • iconv_strrpos()
    • iconv_mime_decode()
    • iconv_mime_encode()
  • Added misc. new functions:
    • ldap_sasl_bind(). (peter_c60@hotmail.com, Jani)
    • imap_getacl(). (Dan, Holger Burbach)
    • file_put_contents(). (Sterling)
    • proc_nice() - Changes priority of the current process. (Ilia)
    • pcntl_getpriority() and pcntl_setpriority(). (Ilia)
    • idate(), date_sunrise() and date_sunset(). (Moshe Doron)
    • strpbrk() - Searches a string for a list of characters. (Ilia)
    • get_headers() - Returns headers sent by the server of the specified URL. (Ilia)
    • str_split() - Breaks down a string into an array of elements based on length. (Ilia)
    • array_walk_recursive(). (Ilia)
    • array_combine(). (Andrey)
  • Added optional parameter to get_browser() to make it return an array. (Jay)
  • Added optional parameter to openssl_sign() to specify the hashing algorithm.(scott@planetscott.ca, Derick)
  • Added optional parameter to sha1(), sha1_file(), md5() and md5_file() which makes them return the digest as binary data. (Michael Bretterklieber, Derick)
  • Added optional parameter to mkdir() to make directory creation recursive. (Ilia)
  • Added optional parameter to file() which makes the result array not contain the line endings and to skip empty lines. (Ilia)
  • Added new range() functionality:
    • Support for float modifier. (Ilia)
    • Detection of numeric values inside strings passed as high & low. (Ilia)
    • Proper handle the situations where high == low. (Ilia)
    • Added an optional step parameter. (Jon)
  • Added encoding detection feature for expat XML parser. (Adam Dickmeiss, Moriyoshi)
  • Added missing multibyte (unicode) support and numeric entity support to html_entity_decode(). (Moriyoshi)
  • Added IPv6 support to ext/sockets. (Sara)
  • Added "ftp://" wrapper support to opendir(), stat() and unlink(). (Sara)
  • Added context options 'method', 'header' and 'content' for "http://" fopen wrapper. (Sara)
  • Added input filter support. See README.input_filter for more info. (Rasmus)
  • Added a replace count for str_[i]replace(), see bug #8218. (Sara)
  • Fixed is_executable() to be available also on Windows. (Shane)
  • Fixed dirname() and strip_tags() to be binary-safe. (Moriyoshi)
  • Fixed bug #24098 (crash in pathinfo()). (Ilia)
  • Fixed bug #21985 and #22064 (various mb_send_mail() issues). (Moriyoshi)
  • Fixed bug #21600 (Assign by reference function call changes variable contents). (Zeev)
Versienummer:5.0 Beta 1
Besturingssystemen:Windows 9x, Windows NT, Windows 2000, Linux, Windows XP, Linux x86
Website:PHP.net
Download:http://nl2.php.net/downloads.php
Bestandsgrootte:4,54MB
Licentietype:Voorwaarden (GNU/BSD/etc.)
Moderatie-faq Wijzig weergave

Reacties (28)

Eindelijk, de eerste beta van PHP 5.
Ik denk dat de zilveren combinatie van PHP en MySQL nu nog beter word. Nu word het goud met PHP 5 en MySQL 4.1 (wanneer is 5 beta?).
Ik heb PHP 5 changelog eens doorgelezen en sommige nieuwe functies zijn echt heel handig.
Ik heb gelezen dat PHP 5 ook behoorlijk sneller zou zijn......
Maar ik zal als eerste alles bekijken want Zend Engine 2.0 heeft grotendeels veel classes verbeteringen.
ik weet al niet alles van classes dus dat word weer leren ;)
ik dacht dat mysql 4 nog niet zo oud was dus waarom zou je gelijk aan versie 5 beginnen

ontopic:
lijkt me erg leuk, versie 5, en volgens mij maakt het niet zoveel uit als de mysql lib er uit gaat want als je mysql op je servertje wilt zetten, dan moet heb je zowiezo die libs wel, lijkt mij
Removed the bundled MySQL client library. (Sterling)
Wat voor gevolgen heeft dit :?
Om het hele verhaal samen te vatten:

MySQL 4.1 werd gereleased met een GPL licentie. PHP valt onder de BSD licentie, wat meer vrijheid geeft. Als PHP GPL code willen opnemen, betekent dat dat zij hun software ook onder GPL moeten releasen, dat is vaak een omstakel voor bedrijven om GPL code te gebruiken en tevens de reden waarom Microsoft deze code 'viraal' vindt.

Wel nu, MySQL biedt een uitzondering voor projecten die onder het OSI (Open Source Initiative) vallen. Echter, PHP valt niet onder OSI. MySQL folks zijn echter wel bezig met een uitzondering voor PHP, die tegen de tijd dat PHP 5 uit de testfase is, klaar moet zijn.

Wat betekent dit?
Dit betekent dat de Beta-versies van PHP5 niet standaard meer de MySQL client library meegeleverd zal krijgen. Je zult dus extra moeite moeten doen om PHP5 Beta werkend te krijgen met MySQL. Maar wees niet bang, tegen de tijd dat PHP5 gamma-status bereikt, zal de MySQL client library weer worden meegeleverd en is er dus niets meer aan de hand.

Relevante links:
http://blogs.phparch.com/mt/archives/000014.html (zeer verhelderend)
http://jeremy.zawodny.com/blog/archives/000812.html
Voor zover ik kan zien heeft dit niet heel grote gevolgen, iig niet in de Win32 versie, want daar zit libmySQL.dll gewoon in de dlls directory van PHP, dus ik weet ook niet precies hoe dat nu zit :S
heeft PHP5 onder Win32 nu wel of geen MySQL ondersteuning (standaard)
Dat weet ik niet zeker, want PHP 5 kan ik hier totaal niet aan de praat krijgen, hij zegt de module niet te kunnen vinden, ook al is php4ts.dll ook op de goede plek aanwezig :/

Edit: Ik had de nieuwe php4ts.dll gekopieerd :)
Je moet de nieuwe php4ts.dll copieren ;)
Dit heeft tot gevolg dat de MySQL client library niet meer meegeleverd wordt met PHP, door licentieproblemen (zie hier).

Als je dus MySQL support in deze versie wil hebben moet je dus de client library van MySQL downloaden en deze linken met PHP (net zoals dat met de meeste PHP extensions gaat).
MySQL is overgestapt naar een ander licentietype, alleen hun libraries waren nog beschikbaar onder de oude licentie. Nu hun libraries ook onder de nieuwe licentie vallen, mag PHP die library niet meer meleveren, omdat ze dan MySQL's licentie overtreden.

Maar je kan afaik gewoon de library bij MySQL downloaden en alsnog vrolijk verder werken met MySQL en PHP, het zit alleen niet meer bij elkaar geleverd.

Staat ook hier: http://marc.theaimsgroup.com/?l=php-dev&m=105621207500778&w=2
op 't forum loopt ook al een draadje over PHP 5.0 ;)

edit:

erhm... dat draadje is dus een beetje dood :o
Volgens mij moet je dan het volgende draadje misschien even proberen:

http://gathering.tweakers.net/forum/list_messages/777094
De makers van de PHP: Hypertext Preprocessor
Perl Hypertext Preprocessor
Not quite, het is toch echt PHP: Hypertext Preprocessor, en het PHP daarin staat dan weer voor PHP: Hypertext Preprocessor, enzz...

een recursief acroniem :)

Vroeger was het PHP/FI ofwel Personal Home Page / Form Interpreter, daar komt de P dus eigenlijk vandaan. Maar nu staat de P voor PHP :Y)
GraasGast heeft in deze gelijk. Als de deze link volgt staat daar onder het 2e kopje de uitleg:
2. What does PHP stand for?

PHP stands for PHP: Hypertext Preprocessor. This confuses many people because the first word of the acronym is the acronym. This type of acronym is called a recursive acronym.
Hetzelfde valt te zeggen over de GNU, dat staat voor "GNU's not Unix!". Wat meer uitleg over zulke acroniemen kun je vinden op: http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=recursive+acronym&a ction=Search :)
altijd leuk ja :)
heb zelf DELTA: Delta Electronic Log and Todo Assistent :)
had 'm ook Melta, Kelta, etc. kunnen noemen :)
(maar ja een delta is een bepaald verschil en dat past mooi bij een time log systeem :))

Maar goed, terug on topic: wat ik zo zie hou ik 't nog maar even bij PHP4, die werkt goed genoeg op dit moment voor mij.
Moet wel zeggen dat ik benieuwd ben naar de nieuwe XML mogelijkheden, onder 4 heb ik er niet echt veel mee kunnen doen nog (ook niet diep ingedoken hoor, maar 't mooie van PHP is juist dat je er niet altijd diep in hoeft te duiken :)
(jaja, als bijna afgestudeerd software engineer is dat niet de beste houding :))
nog sneller? kewl! :)

betekent dat php 5.0 de opvolger wordt van php 4.3.2?

of krijgen we net als bij winamp dat versie 2 en 3 naast elkaar blijven bestaan?
Allereerst komt er eerst nog een 4.3.3 en zal de PHP4 branch nog wel een tijdje door ontwikkeld worden naast 5, zelfs als deze al uit is.

Niet alle servers kunnen zomaar overstappen, maar hebben wel baat bij fixes voor de 4.x tree.
nee... Er komt nog een versie van 4.3, daarna komt 4.5 en daarna pas 5.0 (tussenversies niet meegerekend)
PHP4 heeft PHP3 uiteindelijk ook helemaal opgevolgd, maar waarschijnlijk zit je, zodra PHP5 final is, een tijdje in een overstap periode waar de ene host nog PHP 4.3.x gebruikt en de ander 5.0.
er moet hier toch een randopmerking geplaatst worden denk ik. volgens mijn weten is het zo dat namespaces, OO, en vele andere functionaliteit nog niet geimplementeerd is in deze versie. Het is zelfs nog niet te vinden in de CVS tree momenteel. Dus voor mensen die wat willen spelen zal het een leuke fustratie worden, en echt nieuwe zaken zitten er nog niet in. Tis maar dat je het weet :-)
Dus je zegt dat in deze Beta de Zend Engine 2.0 nog niet helemaal geimplementeerd zit?
Niet dat ik veel PHP ervaring heb, maar ik heb een jaar geleden er wat onderzoek naar gedaan. Daarbij heb ik een aantal tekortkomingen (vanuit mijn perspectief) gezien, die mij besloten hebben toen niet verder met PHP te gaan. Ik ben best wel beniewd of anderen dit ook zo ervaren en of er ondertussen eenvoudige en transparante oplossingen voor zijn?

De tekortkoming waarover ik het heb zijn de volgende:

Probleem 1:

Geen native UNICODE support. Ik moet alle teksten als ascii opslaan. Zodra ik er ipv. ASCI, UTF-8 of UNICODE-16 in string/byte arrays probeer te stoppen dan werken alle interne string functies niet intiutief meer (left, right, substring operaties, etc.)

VBScript en J(ava?)Script hebben wel native UNICODE support en zijn in dat opzicht veel gemakkelijker voor complete reallife applicaties.


Probleem 2:

De nogal verwarrende functie set. Er zijn nogal wat functies dubbel, of soms verschillen ze alleen maar heel subtiel. Bovendien complementeren de functies elkaar niet zo goed, waardoor eigen functies maken op basis van de beschikbare functies (kortom programmeren) niet bevorderd wordt. Hierdoor is het zeker voor beginners in die taal die wel kunnen programeren in een andere taal erg onlogisch en dus onhandig opgezet.

Er waren nog wat kleinere dingen, maar deze twee zijn bij mij blijven hangen. In de changlog zie ik hier echter niets over verlemd staan en ik vraag mij dus werkelijk af of ze hier wat aan gedaan hebben!

Wat denken andere tweakers?
probleem 1 zou opgelost moeten zijn.

probleem 2, mja ik gebruik al php sinds versie 3 en k'moet zeggen er zijn zo wel een paar rare dingen, zoals de implode() & explode() die net omgekeerde glue/array volgorde hadden, wat later is rechtgetrokken maar omwille van backwards compatibiliteit toch nog werkt ....

niets storend, als je je stoort aan het feit dat sizeof en count net hetzelfde doen. Of subtiele verschillen in interne verwerking, die meestal wel zijn aangeduid in de man .... nee, niet echt een reden imo.

Dan kan ik er wel ergere aanhalen (van php4):
- primitieve oop werking
- redelijk tegenvallende out of the box performance (geen script cache/optimizer aanwezig standaard)
- het feit dat E_ALL niet default is.
- ...

PHP5 bevalt me erg goed, k'heb deze beta nog niet geinstalleerd maar draai al enkele maanden versie's van snaps.php.net, k'ga deze beta maar eens compileren, ook meteen tegen mono en nieuwe jdk.
:) :) :)
ik kan bijna niet wachten tot het uit de beta komt :)
heb al een aantal hele leuke dingetjes gezien in de previews van de zend2 engine in 4.3 (was er tijden geleden een paar keer), en vond het ERG leuk :)
extension, private/protected (hoewel private een beetje nutteloos is, gezien iedereen de code gewoon kan lezen, maar het geeft wel internet afblijven-variabelen aan), multiple-extends :) :), nog makkelijkere class-functie aanroepen, etc :)

* 786562 jf.bethlehem
Ik kan er niet mee akkoord gaan dat private variabelen geen nut hebben. Hiermee kan je de interne werking van een class verzekeren, en kan je er zeker van zijn dat je geen vuile truuken begint uit te halen van buiten de classe zelf, die eigenlijk niet de bedoeling zijn - en niet zouden mogen. Dit heeft als effect dat uw design beter moet zijn :)
Wat ie waarschijnlijk bedoelt is dat je de code toch hebt. Als je iets wilt overschrijven dan kun je zelf wel van private public maken.

Dus het is tot dusverre nutteloos dat het je geen garantie geeft dat mensen je code op een specifieke manier gebruiken.

Maar goed.. wat is er dan nuttelozer.. mensen die je code aanpassen omdat ze niet snappen hoe het WEL werkt, of het declareren van private variabelen ;)
Wat een onzin. Private betekent gewoon dat de variabelen alleen binnen de classe aangeroepen kunnen worden en dus niet direct van buitenaf benaderd kunnen worden. Dus wat is daar nou zou nutteloos aan ???

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True