Wpisy otagowane ‘string’

Silne typowanie danych w PHP, część II: autoboxing oraz niezniszczalne obiekty

wtorek, 12 Kwiecień 2011

We wcześniejszym artykule dotyczącym silnego typowania opisałem mechanizm typehintów, który wymusza zgodność typów danych (także nie będących obiektami) przekazywanych do metod i funkcji. Niestety wspomniana implementacja nie zabezpiecza przed innym problemem związanym z dynamicznym typowaniem zmiennych: brakiem kontroli typu podczas nadpisywania wartości zmiennych.

W celu zapewnienia kontroli typu, postanowiłem wprowadzić do języka PHP pojęcie autoboxingu znanego z języków C#, oraz Java. (więcej…)

UTF-8 w PHP 5.0+: Klasa String wzorowana na języku Java

środa, 30 Marzec 2011

Jak dobrze wiemy w PHP obsługa UTF-8 jest po dziś dzień dosyć skromna. Co prawda nie jest to cecha charakterystyczna wyłącznie dla tego języka (podobne problemy mają developerzy np. Ruby’ego), to w czasach, gdy większość stron WWW kodowanych jest w unikodzie, staje się to bolesną niedogodnością podczas developmentu.

Co prawda w wersji 5.3 pojawiła się nowa biblioteka ext/intl próbująca nadrobić opóźnienia w stosunku do reszty świata, jest to niestety zmiana prawie kosmetyczna, a nawet nieelegancka. Prawdziwa rewolucja miała nastąpić dopiero w PHP 6.0. Jako że ta wersja nie ujrzy już niestety światła dziennego, a programiści PHP 5.2, którzy z jakichś powodów nie mogą przesiąść się na wersję 5.3, skazani zostali na używanie zbioru różnych klas nie do końca sprawdzonych lub przemyślanych, postanowiłem że napiszę własną wzorując się na klasie String z języka Java. (więcej…)

StringBuilder w PHP

czwartek, 24 Marzec 2011

Jak dobrze wiadomo, PHP nie jest wyposażony w mechanizm typu StringBuilder znany z innych języków jak C# lub JAVA. W Internecie znaleźć można wiele dyskusji na to, czy taka funkcjonalność jest w ogóle do czegoś potrzebna, oraz gotowe implementacje jako dowody na to, że wydajność nie ulega zmianie.

Ja spróbuję przedstawić dowody odwrotne: mechanizm StringBuilder można w PHP zaimplementować, co korzystnie wpływa na wydajność skryptu. (więcej…)