Php. Склонение слов


Склонение слов, по моему мнению, — это то, что способно показать разницу между хорошей и Лучшей разработкой. Внимание к мелочам — наше все. Согласитесь, фраза «В корзине 1 товаров» смотрится намного хуже, чем «В корзине 1 товар».

Спорить не о чем. Приведу пример класса, которым сам пользуюсь во всех своих проектах, где не стоит вопрос использования мультиязычности.

class WordsDecline{
    /**
     * Метод, определеящий правильное склонение слова на рус. (укр.) языке
     * 
     * @param integer $number число
     * @param array $suffix массив склонений, например [минута, минуты, минут]
     * @return string склоненное слово
     */
    public static function getWord($number, $suffix){
        $keys = array(2, 0, 1, 1, 1, 2);
        $mod = $number % 100;
        $suffix_key = ($mod > 7 && $mod < 20) ? 2: $keys[min($mod % 10, 5)];
        return $suffix[$suffix_key];
    }
}

В использовании класс очень прост. Например:

WordsDecline::getWord( count($cart), ['товар', 'товара', 'товаров'] ) ;

Первым параметром передам число для склонения, а вторым - массив с формами слова для числовых эквивалентов 1, 2, 5 - т.е. 1 товар, 2 товара, 5 товаров.

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *