Koc Ну как бы у меня задачи класса другие... Ну не спорю - красиво, только вот я нигде на увидел Код (Text): ini_get('mbstring.func_overload') и/или Код (Text): function_exists('mb_substr') А я про это говорил.
немного оптимизировал главный класс trim теперь поддерживает массив: PHP: <?php $array = array('строка ', array(' еще строка ', "\t строка с табуляцией\r\n")); var_dump(Str::trim($array)); добавлены алиасы с возможно более осмысленными названиями: Str::take -> Str::str Str::find -> Str:os Str::reverse -> Str::rev возможно в будущем rev, pos, str будут удалены, а останутся вот эти осмысленные (?) названия методов.
Тысячу лет сюда не заходил. Тему прочитал с удовольствием. Интересно было бы увидеть отдельный класс для работы с массивами строк - аналог дотнетовского List<string> или TStringList делфи. имхо был бы небесполезен.
чё приколист? это же елементарные операции - в массив строки записать. Да в делфи на это уходит много кода, а вот на PHP это элементарно Ватсон.
Зачем переделывать функцию strlen() или trim() - это же элементарные функции? Однако написали отдельный метод length() и правильно сделали. Нахер мне в массив строки записывать? Я хочу работать массивом строк с удобной обёрткой, с удобными и понятными методами и свойствами.
рад что понравилось. Ну эта, вот trim уже воспринимает массивы. Скоро будет filter, тоже с поддержкой массивов. Кстати, чего в этом фильтре быть должно? хочу объединить все эти add/strip-slashes-cslashes-спецсимволы (&, ", ', < ...), теги ... kostyl почему sString а не просто string? у тя ж есть PHPDoc а норм IDE его схавает и покажет.
Это безжалостная смесь привычек: - все переменные с большой буквы (Delphi) - указывать тип перед переменной (скорее всего VisualFoxPro - когдато долго сидел) Ну как бы мне больше понятен древний код ну и не напрягает особо такой стиль, я привык и все тут
С#, Java Регламент Java-кодинга: C# (/ Java): Код (Text): String MyStringVariable = new StringBuilder("Hello, World"); c Код (Text): char *str; int function_name(floar argument) { // ... } C# Код (Text): int Function(string Arg) { return Arg; } Формат диктуют дяди с большими яйцами - Microsoft & Sun
Apple Мне пофиг эти дяди. Я считаю понятней назвать переменну с большой буквы, и понятнее назвать метод не getAvgCrash(), а GetAvgCrash() и передать туда $iStrength и $sMessage, тогда не надо запоминать из doc-ов при рефакторинге метода, какие какаие там переменные используются, все происходит намного быстрее...
Это называется "Венгерская нотация". Я считаю ее неудобной. И лично мое наблюдение, что большинство программистов тоже считают ее неудобной. Вопрос - а какой ты префикс ставишь переменной, если не знаешь, какого она будет типа? Например, $var = preg_match('/^def/', "abcdef"); где может вернутся, что bool, что int?
Ну это не совсем Венгерская, это ее часть. Она иногда удобна в динамически типизированных языках. Для меня удобна такая форма. Ответ очевиден - никакой. Перед объектами тоже ничего не ставлю. Это все дело вкуса, удобства и привычки.
http://code.google.com/p/strclass/source/list константа FIRST теперь LEFT (ф-ция find), LAST - RIGHT. Это логично имхо. Добавил режим COUNT для find - возвращает кол-во вхождений. Не поддерживает массивы!. Я не знаю как сделать поддержку их: возвращать общее кол-во вхождений всех элементов или массивом по каждому? Добавлена ф-ция фильтр - но какая-то она говеная. Советуйте Добавил ф-цию hash. Имхо над ней тоже следует поработать. Внимание вопрос: поцчему в интерфейсе есть метод public static function filter($string, $mode); а в абстрактном классе public static function filter($string, $mode, $params = null) Этот абстрактный класс потом используют Str, StrA и StrU. Это я к тому, что можно ль как-то избавиться от дефолтовых переменных везде? Оставить их только в базовом классе Str
http://code.google.com/p/strclass/sourc ... fc70307fc# тут видно ваще я не понимаю, чем мой Str::hash('string', Str::MD5); лучше md5('string'); имхо добавление хеш-фций весьма сомнительно.
http://ua.php.net/manual/ru/function.hash-algos.php Но я вообще-то думал, будет чтото типа: Hash::md5($str); с реализацией для php < 5.1.2 тех функций, которых нету на пыхе например, sha2. Наверняка, в инете есть где-то.
да ну, я уверен, что этот мой класс может и не заработать на < 5.1.2 посоветуй лучше че делать с фильтром
А как у тебя обстоят дела с обработкой ошибок? Сделай эксепшины. Бывает напишут хороший класс, а про это забудут и приходится еще на каждый такой писать по эксепшинской обертке. Как раз только что посмотрел новый встроенный класс DateTime, который полностью будет реализован в PHP5.3. там вот такой код PHP: <?php $date = new DateTime("188"); выдал вот такой эксепшен никаких варнингов я там не увидел
alexey_baranov я только за. Но какие ошибки могут возникнуть? 1) отсутствуют mbstring-функции 2) попадают левые данные вместо констант (как это отлавливать? неужели в каждом методе делать проверки in_array('константа, которая пришла', 'массив разрешенных констант') ? 3) ...
Сложно сказать. я пока только на уровне идеи про твой класс думаю. И вот на уровне идеи, мне бы хотелось, чтобы он ошибки отдавал в виде исключений, а не нулов, пустых строк и варнингов, выданых встроенными строковыми функциями. подумаем над этим еще
Это не проблема: PHP: <? switch ($type) { case self::BOOL: return false; case self::LEFT: return (empty($a)) ? false : min($a); case self::RIGHT: return (empty($a)) ? false : max($a); default: // Опа, левая константа! } На счет фильтра. Я не вижу его в StrU, ни в StrA