Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

Wenslijstje voor PHP6

Hoewel veel mensen nog bezig zijn met het migreren naar PHP 5, wordt PHP 6 ondertussen natuurlijk ook door ontwikkelt. De grote feature van PHP 6 zal de volledige unicode support zijn, maar er is natuurlijk nog ruimte voor meer.Stephan Schmidt heeft een aantal wensen voor PHP6 op een rijtje gezet:

Update: Ik claimde dat PHP5 al typehints had voor int, string, float etc. en dit is niet het geval. Aangepast. Thx daan ;-)

  • PHP5 heeft al typehints maar alleen voor scalars (int, string, float) specifieke klasse namen, interfaces en het type array. Stephan zou ook graag een 'object' typehint zien zodat hij kan aangeven dat een bepaalde functie of methode alleen een object kan ontvangen.
  • Stephan ziet ook graag Namespaces in PHP6, zodat je kunt ontwikkelen binnen een namespace en geen vreemde prefixes hoeft te gebruiken in je klasse namen. Namespaces zouden eigenlijk al in PHP5 komen, maar zijn vanwege technische problemen uitgesteld.

Persoonlijk zou ik graag zien dat de PHP group voor PHP6 meer aandacht gaat besteden aan het migreren. PHP 5 is al 2.5 jaar beschikbaar en er zijn nog steeds een hele hoop mensen die bezig zijn met PHP 4. Gelukkig staat dit ook op de radar van de PHP group, want in de Changelog van PHP 5.2.1 zien we:

Added forward support for (binary) cast. (Derick)

Dit is een van de nieuwe string types die in PHP6 geintroduceerd worden: er zijn unicode strings en binary strings. De details hiervan kun je vinden in Andrei's I love Unicode, You love unicode presentatie. Wanneer je al met unicode dingen bezig bent, kun je nu alvast aangeven wat een gewone binary string is en wat beschouwt moet worden als een unicode string en dat vergemakkelijkt straks de migratie naar PHP6.

Wat zou jij graag zien in PHP 6?

JavaScript partners: jQuery en Ext GUI-componenten

jQuery's John Resig kondigde gisteren een interessante samenwerking aan met Ext.
Deze library, geschreven door Yahoo UI (YUI) evangelist Jack Slocum, biedt een set GUI-componenten om cross-browser interfaces te bouwen met HTML, CSS en JavaScript. Ext begon als YUI-extensie maar zal ook met jQuery worden geïntegreerd. Over planning is op dit moment niets bekend maar Resig belooft een officiële aankondiging op jQuery's blog.

Om je een idee te geven wat er met Ext mogelijk is geef Slocum een aantal gelikte voorbeelden:

Knap werk. Heb je ooit een cross-browser versie van Mozilla's XUL gewenst dan is dit waarschijnlijk bijzonder goed nieuws.

VIM for PHP programmers

Andrei Zmievski heeft enkele van zijn slides van de Vancouver 2007 PHP Conference online gezet. Hierbij zit onder andere de Unicode in PHP6 presentatie die we al eens eerder gezien hebben. In een nieuwe presentatie bespreekt Andrei ViM voor PHP ontwikkelaars. Hij legt allerlei trucjes uit, denk bijvoorbeeld aan "wijzig alle text tussen single-quotes" en geeft zelfs aan hoe je met XDebug zou kunnen communiceren vanuit ViM.

  • Vim is incredibly powerfull
  • But you have to speak it's language.
  • and it will do everything you can imagine
  • languages in general are messy, ambigious and hard
  • yet fantastically brilliant, for they allow us to communicate

77 pagina's aan VIM for PHP programmers (pdf), daar moet je vast wel iets nieuws uit kunnen leren. Ik wel in elk geval!

eKudos Wordpress plugin

eKudos is een social media site en is de Nederlandse variant van Digg. Vanaf nu hebben ze ook een 'live' knop die je kunt plaatsen op je website. Voor meer informatie en de code hiervoor is op deze pagina te lezen.

Alleen de huidige Wordpress plugin van eKudos werkt niet met deze nieuwe feature. Dus ik heb de oude plugin aangepast zodat je vanaf nu wel een live eKudos knop op je website hebt. De code staat hieronder.
(more...)

PHP 5.2.1 vrijgegeven

Gister heeft de PHP Group het jongere broertje van PHP 5.2.0 vrijgegeven: PHP 5.2.1. Deze versie biedt de nodige verbeteringen op verschillende vlakken zoals performance (voornamelijk op het Windows platform), security maar ook stabiliteit en functionaliteit als het gaat om extensies als Filter.

Several performance improvements in the engine, streams API and some Windows specific optimizations.
PDO_MySQL now uses buffered queries by default and emulates prepared statements to bypass limitations of MySQL's prepared statement API.
Many improvements and enhancements to the filter and zip extensions.
Memory limit is now always enabled, this includes Windows builds, with a default limit of 128 megabytes.
Added several performance optimizations using faster Win32 APIs (this change means that PHP no longer supports Windows 98).
FastCGI speed optimized build of PHP for Windows made available for downloading.
Over 180 bug fixes.

De PHP Group lijkt zich momenteel behoorlijk te richten op performance en security maar volgens Stefan Esser (uiteraard) niet genoeg. Om meer aandacht te vragen voor de veiligheid van PHP (of het gebrek daaraan) is hij tevens van plan om een "Month of the PHP bugs" uit te voeren, net zoals Month of Apple Bugs er was voor problemen in Apple software.

Today PHP 5.2.1 was released which fixes some (but not all) of the bugs I will cover in the "Month of PHP bugs". Actually the release announcement already gives a list of bugs that were fixed. As usual the release announcement gives too little information about the bugs, does describe several bugs wrongly, forgets some security bugs that were fixed, downplays the seriousness of the bugs and does not give a single line of credit.

De details van PHP 5.2.1 vind je natuurlijk in de Release Anouncement of de Changelog en downloaden doe je gewoon op je favoriete php.net mirror.

PHPFreakz organiseert web development congres

Sinds enige jaren is PHPFreakz.nl onder gebracht bij een vereniging. Naast het behoud van de website, is een ander doel van de vereniging het organiseren van activiteiten om kennis op het gebied van web development over te brengen. Sinds afgelopen najaar ben ik actief in het bestuur en ben ik nauw betrokken geweest bij de organisatie van de volgende activiteit.

In het kader van kennis overdracht zal zaterdag 14 april 2007 PFcongrez plaatsvinden, het web development congres georganiseerd door de vereniging PHPFreakz. Onder andere Ivo Jansch van Ibuildings en Eric Velleman van Stichting Bartimeus Accessibility zullen hun kennis met ons delen. Het belooft een heel interessante dag te worden, ook voor bezoekers van Scriptorama.

Meer informatie over het congres is te vinden op de website van PFcongrez.

PHP6 komt met nieuwe MySQL client library: MySQLNG.

Enkele mensen uit de PHP wereld waren iets minder blij met het feit dat MySQL A.B. besloten heeft om de client library van MySQL uit te brengen onder de GPL licentie, dit onder andere omdat deze GPL licentie in principe incompatible is met de BSD-style licentie van PHP:

Now why would we care? One boring, yet important aspect, is that mysqlnd will be licensed under the PHP license. So this will solve any legal concerns or hickups and its definitely a nicer solution than the FLOSS exception

Ze hebben dus besloten om voor PHP6 en nieuwer een nieuwe MySQL client library te ontwikkelen welke onder een BSD style licentie wordt vrijgegeven. Als je mysqli gebruikt (zie ook de MySQLI artikelen hier op Scriptorama) veranderd er verder niet veel. De wijziging zit voornamelijk achter de schermen en mysqli werkt zoals vanouds. MySQLNG wordt uitgebracht als een toevoeging en niet als een vervanging voor de reeds bestaande libmysql client library. Dus als je de mysql of MySQLi extensie toch liever met de officiele libmysql client library wilt gebruiken is dat geen enkel probleem.

Update: Het is toch het plan om ook met een PHP5 versie van MySQLNG te komen
(more...)

Sourcecode van Firebug beschikbaar via Google Code

Joe Hewitt, wie eerder deze week een Firebug Pro Userdemo gaf op Yahoo! campus, heeft vandaag de source code van Firebug toegevoegd aan Google Code waardoor andere mensen makkelijker kunnen meehelpen met de ontwikkeling van Firebug.

With that, I’m happy to announce that the Firebug open source project is now live on Google Code. Now you can browse the source without having to crack open the xpi or jar files!

In addition to source control, Google Code provides a simple but capable bug tracking system. I’ve been keeping all bug reports in a little text file, but now I’m starting to enter them on Google Code. If you find a bug in Firebug, I would appreciate if you could search the Firebug issues list first, and if you can’t find it there, enter a new issue.

Vanwege de manier waarop Firefox extensies gebouwd worden (een extensie is in feite een zip bestand met daarin onder andere wat javascript en xul bestanden) had je al toegang tot de code die vrij gegeven was, maar nu heb je dus ook toegang tot de allerlaatste versies en is er een publieke issue tracker waarin je eventueel je ei kwijt kan.

Sarah Golemon over object handles en references

Sinds versie 5 gebruikt PHP een andere manier om om te gaan met objecten. Je hebt waarschijnlijk al in je hoofd dat alle objecten automatisch een reference zijn in PHP5. Een leugen, vindt Sara Golemon, de residente vrouwelijke hacker binnen de PHP community. In het artikel 'You're being lied to' legt ze uit hoe objecten, of specifieker, object handles intern enigzins vergeleken kunnen worden met hoe resources werken in PHP:

To put this another way, PHP4 objects are basically arrays with functions associated with them, PHP5 objects are basicly resources (a la MySQL result handles, or file pointers) again with functions loosely associated to them.

Vervolgens werpt ze ook nog een blik op hoe het reference counting systeem binnen PHP nu in z'n werk steekt en wat voor effect het daadwerkelijk gebruiken van references binnen de taal PHP daarop heeft:

Again, the original zval associated with $x is reused, the only difference this time is that is_ref is not set to 1. This is known as a copy-on-write reference set (as opposed to the full-reference set described above). This 0 flag tells the engine that if anyone tries to change this value (regardless of which label they use to reach it), any other references to it should be left alone. Here's what happens if we take that current state and do $x = 456;

Kortom, wil je wat meer weten over hoe de PHP engine met objecten en references omgaat?
You're being lied to! :)