Uno dei motivi principali per cui il vecchio lavoro di PHP 6 è stato interrotto era dovuto alla complessità interna che comportava e alla quantità di lavoro da fare, che a malapena chiunque non aveva compreso completamente.
Un po 'di storia: l'implementazione di Unicode di PHP 6 è stata progettata dalla necessità di un utente PHP più grande e ha cercato di fare "giusto" Unicode. Dopo una valutazione, il progettista principale del supporto to-be-Unicode di PHP ha scelto di aggiungere un nuovo tipo di stringa che internamente è Utf-16 e per consentire l'utilizzo di diverse encdings in posizioni diverse. Quindi il codice potrebbe essere scritto in una codifica, l'output potrebbe usare una codifica diversa e "operazioni runtme" qualche altra codifica. La ragione per scegliere UTF-16 era che il lavoro dovrebbe essere basato sulla livrary della ICU che usa UTF-16 e si è scoperto che questa codifica rende operazioni stringhe comuni in modo veloce mentre conversi tra utf- e utf-16 è relativamente economico . Fin qui tutto bene.
Ora la conseguenza di ciò è in primo luogo l'introduzione di un nuovo tipo di stringa. Il sistema di tipi interni di PHP fino ad allora aveva pochi tipi (NULL, bool, int / long, float / double, string, array, resource, object) e un sacco di codice aveva alcune ipotesi su questo caso. Oltre a tali presupposti tutte le funzioni che operano su stringhe, e ce ne sono molte, devono essere valutate individualmente e si deve decidere come gestire le codifiche. Dovrebbero lavorare su stringhe binarie o stringhe Unicode? Se è richiesta una conversione, quale codifica dovrebbe essere usata ecc. E questo è un sacco di lavoro e in alcuni casi abbastanza complicato da fare bene. Inoltre, le API interne sono diventate piuttosto complicate, poiché la maggior parte delle API chiave in PHP ha ottenuto le versioni per le stringhe binarie (quella vecchia) e quindi spesso una versione per le stringhe "runtime encoded", così come le stringhe utf-16, creando un pasticcio. ..
Durante il processo in cui molti sviluppatori hanno inciampato nella coplexity, si sono infastiditi da utf-16 e non hanno gradito il fatto che questo avrebbe più che doppio utilizzo della memoria e passasse molto tempo a convertire stringhe mentre rompevano la maggior parte delle applicazioni esistenti. Quindi, essendo il PHP guidato da volontari, sempre meno sviluppatori stavano lavorando su di esso e altre cose si accumulavano e i contributori diventavano infelici e alla fine dovevano essere abbandonati.
Ora cosa potrebbe portare il futuro? - Sta succedendo una lenta evoluzione che sempre più cose in PHP sono costruite attorno a utf-8. Non in modo strong con un tipo personalizzato e forzando tutto e attualmente gli sviluppatori non sono motivati a toccare questo ferro caldo. Si può sperare che qualcuno abbia una buona proposta per farlo funzionare bene, ma attualmente "tutti" scapperanno se sentiranno solo la parola. :)