PHP и магия ООП / Habr

Ага, вот эти ребята, сейчас я покажу Вам магию ООП.

Вместо предисловия. Об авторах языка

Точнее о траве которую курили разработчики, ну как так можно именовать функции? Ну возьмем для примера функции для работы со строками:

  • str_replace(ищем строку $search, заменяем на $replace, в строке $subject [, итого поменяли &$count ] )
  • strpos ( в строке $haystack, ищем $needle [, пропускаем $offset символов] )
  • substr_replace( в строке $string, заменям на $replacement, с позиции $start [, $length ])
  • nl2br (изменяем строку $string [, это $is_xhtml ] )
Как мы видим это очень мрачно, а если брать массивы — в одном месте у нас функция возвращает результат, в другом — работает по ссылке… брр…

Благодаря отсутвию стандартов даже в самом языке, мы имеем некий дискомфорт при работе с данным языком. Да и другие косятся…

PHP это не ООП язык

Эту сказку я частенько слышу. Решил я ее переписать 🙂

Решил, и переписал — на Ruby пару классов, которые будут представлять из себя обертку для строк и масивов. Данные классы включают в себя лишь часто используемые функции (по моему скромному мнению), а вызов остальных возложил на рефлексию.

Массив — oArray

Данный класс включает в себя следующие стандартные функции

  • array_diff — Вычислить расхождение в массивах
  • array_fill — Заполнить массив определенным значением
  • array_filter — Применяет фильтр к массиву, используя функцию обратного вызова
  • array_flip — Поменять местами значения массива
  • array_key_exists — Проверить, присутствует ли в массиве указанный ключ или индекс
  • array_keys — Выбрать все ключи массива
  • array_map — Применить функцию обратного вызова ко всем элементам указанных массивов
  • array_pop — Извлечь последний элемент массива
  • array_product — Вычислить произведение значений массива
  • array_push — Добавить один или несколько элеметов в конец массива
  • array_rand — Выбрать одно или несколько случайных значений из массива
  • array_reverse — Возвращает массив с элементами в обратном порядке
  • array_search — Осуществляет поиск данного значения в массиве и возвращает соответствующий ключ в случае удачи
  • array_shift — Извлечь первый элемент массива
  • array_slice — Выбрать срез массива
  • array_splice — Удалить последовательность элементов массива и заменить её другой последовательностью
  • array_sum — Вычислить сумму значений массива
  • array_unique — Убрать повторяющиеся значения из массива
  • array_unshift — Добавить один или несколько элементов в начало массива
  • array_values — Выбрать все значения массива
  • sort — Отсортировать массив
  • rsort — Отсортировать массив в обратном порядке
  • natsort — Отсортировать массив, используя алгоритм «natural order»
  • natcasesort — Отсортировать массив, используя алгоритм «natural order» не принимая во внимание регистр символов
  • ksort — Отсортировать массив по ключам
  • krsort — Отсортировать массив по ключам в обратном порядке
  • implode — Объединяет элементы массива в строку

А так же немного полезной отсебячины:

  • to_url — Обертка для http_build_query
  • clear — Убрать пустые элементы массива
  • odd — Оставить лишь нечетные элементы
  • even — Оставить лишь четные элементы
  • size — Врапер для функции sizeof

Для всех функций вида array_* сей префикс я убрал (ведь мы и так знаем, что работает с массивом), остальный функции — на совести метода __call и рефлексии.

Строка — oString

Данный класс включает в себя следующие стандартные функции

  • addslashes — Экранирует спецсимволы в строке
  • count_chars — Возвращает информацию о символах, входящих в строку
  • crc32 — Вычисляет CRC32 для строки
  • crypt — Необратимое шифрование (хэширование)
  • explode — Разбивает строку на подстроки
  • html_entity_decode — Преобразует HTML сущности в соответствующие символы
  • htmlentities — Преобразует символы в соответствующие HTML сущности
  • htmlspecialchars_decode — Преобразует специальные HTML-сущности обратно в соответствующие символы
  • htmlspecialchars — Преобразует специальные символы в HTML сущности
  • ltrim — Удаляет пробелы из начала строки
  • md5 — Возвращает MD5 хэш строки
  • money_format — Форматирует число как денежную величину
  • nl2br — Вставляет HTML код разрыва строки перед каждым переводом строки
  • number_format — Форматирует число с разделением групп
  • parse_str — Разбирает строку в переменные
  • rtrim — Удаляет пробелы из конца строки
  • sha1 — Возвращает SHA1 хэш строки
  • sprintf — Возвращает отформатированную строку
  • str_pad — Дополняет строку другой строкой до заданной длины
  • str_repeat — Возвращает повторяющуюся строку
  • str_replace — Заменяет строку поиска на строку замены
  • str_ireplace — Регистро-независимый вариант функции str_replace()
  • str_word_count — Возвращает информацию о словах, входящих в строку
  • strip_tags — Удаляет HTML и PHP тэги из строки
  • stripslashes — Удаляет экранирование символов, произведенное функцией addslashes()
  • strstr — Находит первое вхождение подстроки
  • stristr — Регистро-независимый вариант функции strstr()
  • strpos — Возвращает позицию первого вхождения подстроки
  • stripos — Возвращает позицию первого вхождения подстроки без учета регистра
  • strrpos — Возвращает позицию последнего вхождения символа
  • strripos — Возвращает позицию последнего вхождения подстроки без учета регистра
  • strrev — Переворачивает строку
  • strtolower — Преобразует строку в нижний регистр
  • strtoupper — Преобразует строку в верхний регистр
  • substr_count — Возвращает число вхождений подстроки
  • substr_replace — Заменяет часть строки
  • substr — Возвращает подстроку
  • trim — Удаляет пробелы из начала и конца строки
  • ucfirst — Преобразует первый символ строки в верхний регистр
  • ucwords — Преобразует в верхний регистр первый символ каждого слова в строке
  • wordwrap — Выполняет перенос строки на данное количество символов с использованием символа разрыва строки

А так же немного полезной отсебячины:

  • add — Конкатенация строк
  • insert — Вставка строки в строку
  • size — Врапер для функции strlen

Для всех функций вида str_* и str* сей префикс был убран.

Так же выделил функции для работы с URL — и запихнул их в отдельный класс (oUrl):

  • parse_url
  • urlencode
  • urldecode

Слайды

Теперь приведу пример использования сего творения:

oArray()                   // создаем пустой массив
        ->range(0,100,10)  // врапер для  range
        ->size()           // врапер для  sizeof
        ;

Как Вам? Даю еще пищу для мозга:

<?php
 
// создаем массив из элементов 
// =>  array(‘module’, ‘controller’, ‘action’) 
oArray(‘module’, ‘controller’, ‘action’) 
        // врапер для  array_combine
        // =>  array(‘module’=>’default’, ‘controller’=>’index’, ‘action’=>’index’)
        ->combine(oArray(‘default’, ‘index’, ‘index’)) 
        // врапер для   http_build_query возвращает oUrl
        // =>  module=default&controller=index&action=index
        ->to_url()
        // добавляем кусочек строки в начало
        // =>  http://domain. com/?module=default&controller=index&action=index
        ->insert(‘http://domain.com/?’) 
        // врапер для  parse_url возвращает oArray                                       
        ->parse()
        // возвращает array[‘host’]
        // =>  domain.com
        ->host                                        
        ;

И еще:

oString(«It’s my way»)
        // str_replace       => «It’s your way»
        ->replace(‘my’,’your’)    
        // substr              => «It’s you»
        ->sub(0,  8)  
        // str_pad            => «It’s you…»            
        ->pad(11, ‘.’)  
        // str_repeat        => «It’s you…It’s you…»          
        ->repeat(2)    
        // получаем oArray => array(‘It’s you’,’It’s you’, »)
        ->explode(‘. ..’)  
        // удаляем пустые элементы        
        ->clear()
        // array_merge => array(‘It’s you’,’It’s you’, ‘Yes’,’No’,’Maybe’)       
        ->merge(array(‘Yes’,’No’), array(‘Maybe’)) 
        // implode => It’s you;It’s you;Yes;No;Maybe 
        ->implode(‘;’) 
        // return It’s you;It’s you;Yes;No;Maybe 
        ->get()
        ;

Объект — oObject

Даже обычный класс можно улучшить — добавив ему хитрые гетеры/сетеры для свойств объекта (я это подсмотрел в RoR):

class MyClass extends Object_Object {
    // это действительно protected свойство
    protected $_protected;
 
    // для данных полей можно определить гетеры/сетеры
    protected $title;
    protected $description;
 
    // public свойство без гетеров/сетеров
    public    $data;
 
    /**
     * Сеттер для свойства title
     *
     * @param string $value
     * @return mixed
     */
    function setTitle($value) {
        $this->title = ucfirst($value);
    }
 
    /**
     * Геттер для свойства title
     *
     * @return mixed
     */
    function getTitle() {
        return $this->title .  ‘!!!’;
    }
}
 
$MyClass = new MyClass();
$MyClass -> title = ‘article title’;
 
echo $MyClass -> title;

В результате сей махинации мы получим следующий результат:

Article title!!!

Как видим — подобный класс даже имеет право на существование 😉

Вот такое нехитрое творение у меня получилось, скачать его можно с моего блога:

oObject ver.0.1

P.S. Данные классы не претендуют на жизнь в реальных проектах, они предназначены дабы развеять миф о не-ООП-ешности PHP, а так же послужат неплохим материалом для изучения начинающими программистами…

P.P.S. Я же обещал сие написать ради холивара…

Функции Строк — Учебник PHP — Schoolsw3.com

Строковые функции PHP являются частью ядра PHP. Для использования этих функций установка не требуется.

функцияОписание
addcslashes()Возвращает строку с обратной косой чертой перед указанными символами
addslashes()Возвращает строку с обратными косыми чертами перед предопределенными символами
bin2hex()Преобразует строку символов ASCII в шестнадцатеричные значения
chop()Удаляет пробелы или другие символы из правого конца строки
chr()Возвращает символ из указанного значения ASCII
chunk_split()Разбивает страку на ряд более мелких частей
convert_cyr_string()Преобразует строку из одного набора кириллических символов в другой
convert_uudecode()Декодирует строку в кодировке uuencode
convert_uuencode()Кодирует строку с помощью алгоритма uuencode
count_chars()Возвращает информацию о символах, используемых в строке
crc32()Вычисляет 32-разрядный CRC для строки
crypt()Одностороннее хеширование строк
echo()Выводит одну или несколько строк
explode()Разбивает строку на массив
fprintf()Записывает форматированную строку в указанный выходной поток
get_html_translation_table()Возвращает таблицу перевода, используемую htmlspecialchars() и htmlentities()
hebrev()Преобразует текст на иврите в визуальный текст
hebrevc()Преобразует текст на иврите в визуальный текст и новые строки (\n) в <br>
hex2bin()Преобразует строку шестнадцатеричных значений в символы ASCII
html_entity_decode()Преобразует HTML объекты в символы
htmlentities()Преобразует символы в объекты HTML
htmlspecialchars_decode()Преобразует заданный HTML-сущности символы
htmlspecialchars()Преобразует некоторые предопределенные символы в HTML объекты
implode()Возвращает строку из элементов массива
join()Псевдоним из implode()
lcfirst()Преобразует первый символ строки в нижний регистр
levenshtein()Возвращает расстояние Левенштейна между двумя строками
localeconv()Возвращает информацию о числовом и денежном форматировании информации
ltrim()Удаляет пробелы или другие символы из левой части строки
md5()Вычисляет MD5 хэш строки
md5_file()Вычисляет хэш MD5 файла
metaphone()Вычисляет ключ метафона строки
money_format()Возвращает строку, отформатированную как строка валюты
nl_langinfo()Возвращает конкретную локальную информацию
nl2br()Вставляет разрывы строк HTML перед каждой новой строкой в строке
number_format()Форматирует число с сгруппированными тысячами
ord()Возвращает значение ASCII первого символа строки
parse_str()Разбирает строку запроса на переменные
print()Выводит одну или несколько строк
printf()Выводит форматированную строку
quoted_printable_decode()Преобразует строку для печати в кавычках в 8-битную строку
quoted_printable_encode()Преобразует 8-битную строку в строку для печати в кавычках
quotemeta()Кавычки мета символов
rtrim()Удаляет пробелы или другие символы из правой части строки
setlocale()Устанавливает информацию о локали
sha1()Вычисляет хэш SHA-1 строки
sha1_file()Вычисляет хэш SHA-1 файла
similar_text()Вычисляет сходство между двумя строками
soundex()Вычисляет ключ soundex строки
sprintf()Записывает форматированную строку в переменную
sscanf()Анализирует входные данные из строки в соответствии с форматом
str_getcsv()Анализирует строку CSV в массиве
str_ireplace()Заменяет некоторые символы в строке (без учета регистра)
str_pad()Прокладывает строку на новую длину
str_repeat()Повторяет строку заданное количество раз
str_replace()Заменяет некоторые символы в строке (с учетом регистра)
str_rot13()Выполняет кодирование алгоритма ROT13 в строке
str_shuffle()Произвольно перетасовывает все символы в строке
str_split()Разбивает строку на массив
str_word_count()Подсчитайте количество слов в строке
strcasecmp()Сравнивает две строки (без учета регистра)
strchr()Находит первое вхождение строки внутри другой строки (псевдоним из strstr())
strcmp()Сравнивает две строки (чувствительные к регистру)
strcoll()Сравнивает две строки (сравнение строк на основе локали)
strcspn()Возвращает количество символов, найденных в строке до того, как будет найдена какая-либо часть некоторых указанных символов
strip_tags()Удаляет HTML и PHP теги из строки
stripcslashes()Unquotes строка, заключенная в кавычки с помощью addcslashes()
stripslashes()Unquotes строка заключенная в кавычки с помощью addslashes()
stripos()Возвращает позицию первого вхождения строки внутри другой строки (без учета регистра)
stristr()Находит первое вхождение строки внутри другой строки (без учета регистра)
strlen()Возвращает длину строки
strnatcasecmp()Сравнивает две строки с помощью алгоритма «естественного порядка» (без учета регистра)
strnatcmp()Сравнивает две строки, используя алгоритм «естественного порядка» (чувствительный к регистру)
strncasecmp()Строковое сравнение первых n символов (без учета регистра)
strncmp()Строковое сравнение первых n символов (чувствительно к регистру)
strpbrk()Поиск строки для любого из набора символов
strpos()Возвращает положение первого вхождения строки внутри другой строки (с учетом регистра)
strrchr()Находит последнее вхождение строки внутри другой строки
strrev()Переворачивает строку
strripos()Находит положение последнего вхождения строки внутри другой строки (без учета регистра)
strrpos()Находит положение последнего вхождения строки внутри другой строки (чувствительно к регистру)
strspn()Возвращает количество символов, найденных в строке, содержащей только символы из указанного чарлиста
strstr()Находит первое вхождение строки внутри другой строки (чувствительно к регистру)
strtok()Разбивает строку на более мелкие строки
strtolower()Преобразует строку в строчные буквы
strtoupper()Преобразует строку в заглавные буквы
strtr()Переводит определенные символы в строку
substr()Возвращает часть строки
substr_compare()Сравнивает две строки из заданной начальной позиции (двоичная безопасная и дополнительно чувствительная к регистру)
substr_count()Подсчитывает количество раз, когда подстрока встречается в строке
substr_replace()Заменяет часть строки другой строкой
trim()Удаляет пробелы или другие символы с обеих сторон строки
ucfirst()Преобразует первый символ строки в верхний регистр
ucwords()Преобразует первый символ каждого слова в строке в верхний регистр
vfprintf()Записывает форматированную строку в указанный выходной поток
vprintf()Выводит форматированную строку
vsprintf()Записывает форматированную строку в переменную
wordwrap()Обертывание строки в заданное количество символов

Функции обработки переменных PHP

❮ Предыдущий Далее ❯


Функции обработки переменных PHP являются частью ядра PHP. Для использования этих функций установка не требуется.

Функция Описание
логическое значение() Возвращает логическое значение переменной
debug_zval_dump() Выводит строковое представление внутреннего значения Zend на выход
двойное значение() Псевдоним floatval()
пустой() Проверяет, пуста ли переменная
число с плавающей запятой() Возвращает значение с плавающей запятой переменной
get_defined_vars() Возвращает все определенные переменные в виде массива
get_resource_type() Возвращает тип ресурса
получить тип() Возвращает тип переменной
интервал() Возвращает целочисленное значение переменной
is_array() Проверяет, является ли переменная массивом
is_bool() Проверяет, является ли переменная логической
is_callable() Проверяет, может ли содержимое переменной вызываться как функция
is_countable() Проверяет, является ли содержимое переменной счетным значением
is_double() Псевдоним is_float()
is_float() Проверяет, имеет ли переменная тип float
is_int() Проверяет, является ли переменная целочисленным типом
is_integer() Псевдоним is_int()
is_iterable() Проверяет, является ли содержимое переменной итерируемым значением
is_long() Псевдоним is_int()
is_null() Проверяет, является ли переменная NULL
is_numeric() Проверяет, является ли переменная числом или числовой строкой
is_object() Проверяет, является ли переменная объектом
is_real() Псевдоним is_float()
is_resource() Проверяет, является ли переменная ресурсом
is_scalar() Проверяет, является ли переменная скалярной
is_string() Проверяет, имеет ли переменная строковый тип
isset() Проверяет, установлена ​​ли переменная (объявлена, а не NULL)
print_r() Выводит информацию о переменной в удобочитаемом виде
сериализовать() Преобразует хранимое представление значения
settype() Преобразует переменную в определенный тип
стрвал() Возвращает строковое значение переменной
десериализовать() Преобразует сериализованные данные обратно в фактические данные
снято() Сбрасывает переменную
var_dump() Выводит информацию об одной или нескольких переменных
var_export() Возвращает структурированную информацию (действительный код PHP) о переменной

❮ Предыдущий Далее ❯

ПИКЕР ЦВЕТА



Лучшие учебники
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебник по SQL
Учебник по Python
Учебник по W3. CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery

Лучшие ссылки
HTML Reference
CSS Reference
JavaScript Reference
SQL Reference
Python Reference
W3.CSS Reference
Bootstrap Reference
PHP Reference
HTML Colors
Java Reference
Angular Reference
jQuery Reference

902 29Популярные примеры Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery


ФОРУМ | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

Строковые функции PHP

PHP столь же эффективен, как и любой другой серверный язык сценариев для обработки строк. Мы поэкспериментируем с некоторыми строковыми функциями PHP на нескольких примерах. Существуют мощные функции, такие как регулярные выражения, для управления сложными требованиями к обработке строк. Вот некоторые из них. 900 16 password_verify() 9001 6 strcasecmp()
Функции Описание
fgetcsv() Получение данных из файла CSV
fputcsv() Запись данных в файл CSV 90 017
htmlspecialchars() Преобразование символов HTML
lcfirst() Первый символ в нижнем регистре
preg_replace() Замена строки регулярного выражения
md5() Шифрование строк
nl2br() Преобразование разрывов строк в теги HTML
password_hash() Односторонний хэш пароля
Строка, соответствующая хэшу пароля
strip_tags () Удаление тегов HTML из строки и сохранение текстовой части
str_replace() Замена строки с учетом регистра
str_ireplace() Замена строки без учета регистра
substr_count() Подсчет наличия подстроки внутри основной строки
str_repeat() Повторяющаяся строка
str_word_count() Подсчет слов в строка
random_bytes() криптографически безопасные случайные байты ( PHP 7 )
strrev() Реверсирование строки
strlen() Длина строки
strstr() Поиск строки с иглой (с учетом регистра)
stristr() Поиск строки с иглой (регистр в -чувствительный )
split() Разрыв строки с помощью разделителя
Explosion() Разрыв строки с использованием разделителя
substr() Часть строки с длиной и позицией
strtolower() Замена всех символов верхнего регистра на нижний
strtoupper() Замена всех символов нижнего регистра на верхний регистр
сравнение строк без учета регистра
strcmp() сравнение строк с учетом регистра
str_pad() Строка заполнения слева, справа или с обеих сторон
trim() Удаление чара или пустого пространства слева, справа и обе стороны струны
UCWords () Изменение в верхнем регионе для каждого первого чара из всех слов строки
UCFIRST () изменение
() в верхний регистр для первого символа строки
wordwrap() Перенос строки после ширины
  • strpos() поиск с учетом регистра возвращает позицию первое вхождение
  • поиск без учета регистра stripos() возвращает позицию первого вхождения
  • strrpos() поиск с учетом регистра возвращает позицию последнего вхождения
  • Поиск без учета регистра strripos() возвращает позицию последнего вхождения
Проверьте, является ли входная строка палиндромом или нет проверка наличия только строчной или прописной буквы.

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

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