function Mbucfirst($str) { { { $a = function($str) { return mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8') . mb_strtolower(mb_substr($str, 1, null, 'UTF-8'), 'UTF-8'); }; } else { } } return $a($str); }
class Mb { { { { self::$a = function($str) { return mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8') . mb_strtolower(mb_substr($str, 1, null, 'UTF-8'), 'UTF-8'); }; } else { } } return self::$a($str); } }
<?php /** * Interfejs zapewniający nam to samo API klas * @Author Paweł Stelmasiak <YourFrog> */ interface IString { } /** * Klasa obsługująca stringi MB (multibyte) * @Author Paweł Stelmasiak <YourFrog> */ class StringMB implements IString { { return mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8') . mb_strtolower(mb_substr($str, 1, null, 'UTF-8'), 'UTF-8'); } } /** * Klasa obsługująca standardowo stringi * @Author Paweł Stelmasiak <YourFrog> */ class String implements IString { { } } /** * Fabryka decydująca o rodzaju wykorzystywanej klasy stringów * @Author Paweł Stelmasiak <YourFrog> */ class StringFactory { /** * Zwraca odpowiednią klasę * @return IString */ { if( self::$instance === null ) { self::$instance = new StringMB(); else self::$instance = new String(); } return self::$instance; } } //Gdzieś w pliku php $string = StringFactory::build();