Преобразование индо-арабских цифр в арабские цифры на PHP
Арабские цифры, к которым мы привыкли, используются в большинстве стран мира и составляют набор из десяти знаков: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; для записи чисел в десятичной системе счисления. Но арабские и индо-арабские цифры являются видоизменёнными начертаниями индийских цифр, приспособленными к арабскому письму.
Арабские цифры, используемые в арабских странах Африки (кроме Египта) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Индо-арабские цифры, используемые в арабских странах Азии и в Египте | ٠ | ١ | ٢ | ٣ | ٤ | ٥ | ٦ | ٧ | ٨ | ٩ |
Персидские цифры | ۰ | ۱ | ۲ | ۳ | ۴ | ۵ | ۶ | ۷ | ۸ | ۹ |
Индийские цифры (в письме деванагари), используемые в Индии | ० | १ | २ | ३ | ४ | ५ | ६ | ७ | ८ | ९ |
Само название «арабские цифры» образовалось исторически, из-за того, что именно арабы распространяли десятичную позиционную систему счисления. Цифры, которые используют в арабских странах Азии и в Египте (называемые арабами "индийскими цифрами"), по начертанию сильно отличаются от используемых в европейских странах.
Преобразование первых букв в заглавные(верхний регистр) - PHP
PHP хорош многообразием нативных функций языка. Однако, в некоторых случаях приходится дописывать недостающий функционал. Особенно это заметно при работе с функциями преобразования строк и различными кодировками.
Например, ucfirst — функция, которая преобразовывает первый символ строки в верхний регистр. Казалось бы, не должно возникнуть никаких проблем, но при работе с кириллицей такого преобразования не происходит. Это касается и функции ucwords — преобразует в верхний регистр первый символ каждого слова в строке.
С символами анг.алфавита проблем не возникает...
Шаблоны проектирования в PHP: Singleton
Singleton (Синглтон, одиночка) - порождающий шаблон проектирования, гарантирует, что в приложении(однопоточном) будет использоваться только один(единственный) экземпляр класса. Объекты класса Singleton будут созданы только один раз и при последующих обращениях будет использоваться уже созданный объект, а не будут создаваться новые экземпляры. Это очень удобно и экономно. Например: соединение к БД - нам не нужно каждый раз создавать новое соединение; доступ к объекту конфигурации; в MVC - порождение главного контроллера; объект логирования.
Включить показ предупреждений и ошибок в PHP
Включить вывод предупреждений и ошибок в PHP можно тремя способами.
1. Включение вывода предупреждений и ошибок в файле php.ini
2. Включение вывода предупреждений и ошибок в PHP-скрипте
3. Включение вывода предупреждений и ошибок в файле .htaccess
Шаблоны(паттерны) проектирования(design pattern)
Шаблоны(паттерны) проектирования(design pattern) - конструкция, которая представляет собой решение в рамках некоторого контекста. Шаблон проектирования это не законченная реализация чего нибудь, а всего лишь пример того, как можно сделать некоторую задачу. В ООП шаблоны показывают взаимоотношение между классами и объектами, без определения того, какие конечные классы или объекты приложения будут использоваться.
Предназначение шаблонов проектирования - это уменьшить сложность разработки за счет уже готовых решений и продуманных абстракций. За счет использования шаблонов происходит унификация программных решений.
Релиз PHP 5.5.4
Обновился PHP 5.5 и PHP 5.4. Новые версии 5.5.4 и 5.4.20. В основном это фиксы разнообразных багов.
Список изминений в PHP 5.5.4, всего исправлено 17 ошибок.
Список некоторых изминений:
- устранен крах при манипуляции с объктами cli/apache;
Релиз Doctrine 2.4
Вышла новая версия популярной ORM библиотеки Doctrine 2.4. Начиная с этой версии Doctrine не будет доступна из PEAR, только Composer. Разработчики считают, что поддержка PEAR является очень сложной и трудоемкой, по сравнении с тем количеством людей, которые изпользуют этот канал для загрузки библиотеки.
Обратная несовместимость
- Изменен DoctrineDBALSchemaConstraint API
- Багфиксы в PersistentCollection#matching()
- Composer служит загрузчиком по умолчанию
Сравнение скорости работы isset, empty, array_key_exists в PHP
При написании скриптов на PHP часто возникают ситуаци , в которых нужна банальная проверка существования ключа массива. Допустим, что есть исходный массыв данных $array с не пустыми и не нулевыми значениями и ключами. Данные которые вносятся в массив "валидны для нас". Для задачи проверки определенного ключа в массиве подойдут две функции: isset, array_key_exists и языковая конструкция empty, точнее !empty. Постает вопрос: какую функцию или конструкцию использовать? Исходя из того, что основным критерием есть скорось выполнения скрипта, проведем тесты скорости работы этих функций и конструкции.
Пусть $array - исходный массив с 1000 элементов. Ключами будут хэши(md5) от цифр в диапазоне 0...999, значения сами цифры.
То есть так: $array = array(md5(0)=>0, md5(1)=>1,... md5(999)=>999);
Composer - менеджер зависимостей для PHP
Composer — популярный менеджер управления зависимостями в PHP. Composer - устанавливает зависимые библиотеки, необходимые для отдельного проекта. В отличии от PEAR - который ставит их глобально.
Composer это не обычный менеджер пакетов. Речь идет о "пакетах" или библиотеках установленных для отдельного проекта в отдельный каталог или папку(например, vendor для Yii фреймворка). По умолчанию Composer ничего не будет устанавливать глобально. Таким образом он является менеджером зависимостей.
Сама идея не нова. Аналогичные инстументы это npm для Node.js и Bundler для Ruby, от куда и черпалось основное вдохновление. Но для PHP не было ничего подобного.
Задачу, которую решает Composer и суть работы:
a) У вас есть проект, котрый зависит от многих библиотек.
b) Некоторые из библиотек зависят от других библиотек.
c) Вы объявляете, что у вас есть зависимости.
d) Composer сморит, какие библиотеки и какие версии должны быть установлены и устанавливает их(загружает в свой проект).