[PHP] Rude-PHP. Библиотека для разработки приложений

12
Mad_Man
На сайте с 10.11.2008
Offline
162
1124

На всеобщее осуждение и срач вываливаю своё последнее творение: Rude-PHP. Сабж появился под влиянием работы на один американский журнал медицинской тематики, где постоянно нужно написать что-то срочно (СРОЧНО!11) и работающее быстро и стабильно.

Линки: библиотека и документация, гитхаб, архив с библиотекой.

Итак, в чём прелесть и вообще зачем оно:

  • Тонна решений для рутинных задач при работе со строками и другими базовыми типами данных (половина солюшенов, за которыми нужно лезть на stackoverflow уже здесь).
  • Установка проста до безобразия: распаковать архив и подключить одной строкой. Также есть возможность инсталла в проект с помощью Composer.
  • В библиотеке есть автоподгрузка классов, нет необходимости делать постоянные `include` и `require`.
  • Документация в формате PHPDoc с описанием (аж на двух языках), примерами использования и указанием типов. Всё полностью совместимо с PHPStorm.
  • Онлайн документация с разбиением по логическим секциям.
  • Мощные классы для работы с БД (аж двух типов формирования SQL: объектное конструирование для тех, кому надоело писать одни и те же банальные SQL - теперь выборки из базы реальны в пару строк; прямые SQL запросы к базе для тех, кто не понял зачем первый способ или же просто решил написать SQL ростом в 200 строк).
  • Мощный класс для десериализации бинарных данных. Изучение странных бинарей и выгребание из них данных с комфортом.
  • Библиотека расширяема. Вы всегда можете докинуть своих классов без особых проблем в директорию `workspace`, которая не затрётся при следующем обновлении.
  • Таким вот нехитрым способом из пункта выше сайт библиотеки был написан на самой себе за смешные сроки.
  • Apache v2 лицуха на весь код. Делаем что угодно и в любых целях.

Рекомендую в первую очередь для тех, кто всё ещё кодит в блокнотах, пишет выборки на устаревших классах mysql* и юзает регулярки там, где это вообще не нужно.

[umka]
На сайте с 25.05.2008
Offline
456
#1
Mad_Man:
и юзает регулярки там, где это вообще не нужно.

То есть, этот класс выпрямляет людям руки? :)

Лог в помощь!
LEOnidUKG
На сайте с 25.11.2006
Offline
1588
#2
Рекомендую в первую очередь для тех, кто всё ещё кодит в блокнотах

Да да да... Для фейшунистов и остальных любителей "Apple" :)

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
Mad_Man
На сайте с 10.11.2008
Offline
162
#3
umka:
То есть, этот класс выпрямляет людям руки?

Скорее мышление.

LEOnidUKG:
Да да да... Для фейшунистов и остальных любителей "Apple"

Обижаешь линуксоида :О

TF-Studio
На сайте с 17.08.2010
Offline
321
#4

public static function size($string)
{
return strlen($string);
}

Смысл этого?

и почему не mb_ ибо utf-8 шалит иногда

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
Mad_Man
На сайте с 10.11.2008
Offline
162
#5
TF-Studio:
Смысл этого?
и почему не mb_ ибо utf-8 шалит иногда

mb_* не впёр, предполагается использование строки как и у алиасов в глобальном неймспейсе - с поправкой на размеры в байтах. Если совсем приспичит - появится класс string_utf8:: или валидация на мультибайтовые кодировки. Но на текущий момент функция, предоставляемая языком, предельно медленная и вероятность промаха при определении высока.

За объяснениями к сорцам PHP на гитхабе. В последний раз когда я их видел - mb_detect_encoding там являл собой здоровый костыль на сишке, который к использованию не рекомендую. Если будет годный исходник с быстрым определением кодировки строки - сюда\в ЛС\в скайп ссылку на пасту, посмотрю.

Хотя решать десятилетние проблемы языка мне одному выглядит как-то зловеще, не находите?

LEOnidUKG
На сайте с 25.11.2006
Offline
1588
#6
TF-Studio:
Смысл этого?

Ну как в чём? Это вам ёмаё не в блокноте программировать! Нифига вы не понимаете в феншуи! 😂

Mad_Man, не в обиду, но такой хренью реально юзаться чисто для себя любимого и не более того. А переписывать название стандартных функций, чисто для того, чтобы выучить другие название, это бредятина. Это кстати касается не только этой поделки, но и большинства фреимворков.

Mad_Man
На сайте с 10.11.2008
Offline
162
#7
LEOnidUKG:
Ну как в чём? Это вам ёмаё не в блокноте программировать! Нифига вы не понимаете в феншуи! 😂

Mad_Man, не в обиду, но такой хренью реально юзаться чисто для себя любимого и не более того. А переписывать название стандартных функций, чисто для того, чтобы выучить другие название, это бредятина. Это кстати касается не только этой поделки, но и большинства фреимворков.

Боги, да юзайте что только в голову взбредёт. Я предлагаю опыт разработки и инструмент для этого. Вопли "только для себя" и "блокнотик" можете разбрасывать в любом треде, полезнее вы от этого не становитесь :​)

siv1987
На сайте с 02.04.2009
Offline
427
#8

По поводу mb_detect_encoding... юзал когда-то такой костыль - preg_match('//u', 'text');

или еще такой /ru/forum/comment/12555453

Mad_Man
На сайте с 10.11.2008
Offline
162
#9
siv1987:
По поводу mb_detect_encoding... юзал когда-то такой костыль - preg_match('//u', 'text');

или еще такой /ru/forum/comment/12555453

$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse mollis elementum tempus. Vivamus bibendum elit nisl, quis tristique arcu volutpat at. Vestibulum bibendum at neque ac semper. Duis sit amet felis pharetra, eleifend felis nec, eleifend nunc. Aliquam erat volutpat. Donec vestibulum augue erat, vel feugiat ligula ultricies ac. Aliquam erat volutpat. Morbi et iaculis neque. Morbi placerat tortor non nunc tempor, eu feugiat risus volutpat. Phasellus interdum dolor sed turpis mollis consectetur. Donec tincidunt lacus magna. Vestibulum semper condimentum lorem, ut porttitor enim blandit nec. Pellentesque non rutrum quam, id pharetra metus. Заблуждение контролирует трансцендентальный язык образов, открывая новые горизонты. Гипотеза контролирует непредвиденный даосизм. Культ джайнизма включает в себя поклонение Махавире и другим тиртханкарам, поэтому заблуждение категорически порождает и обеспечивает закон внешнего мира, не учитывая мнения авторитетов.";

$speedtest = new speedtest(true);

for ($i = 0; $i < 10000; $i++)
{
if (mb_detect_encoding($string, 'UTF-8', true) == 'UTF-8')
{
# it's UTF-8
}
}

$speedtest->end();

debug('Выполнение проверки средствами PHP заняло ' . $speedtest->result() . 's');

Выполнение проверки средствами PHP заняло 0.0581s

$speedtest = new speedtest(true);

for ($i = 0; $i < 10000; $i++)
{
if (preg_match('//u', $string))
{
# it's UTF-8
}
}

$speedtest->end();

debug('Выполнение проверки средствами регулярок заняло ' . $speedtest->result() . 's');

Выполнение проверки средствами регулярок заняло 0.0143s

$speedtest = new speedtest(true);

for ($i = 0; $i < 10000; $i++)
{
if (preg_match("/([\360-\364])([\200-\277])([\200-\277])([\200-\277])/", $string) or
preg_match("/([\340-\357])([\200-\277])([\200-\277])/", $string) or
preg_match("/([\300-\337])([\200-\277])/", $string))
{
# it's UTF-8
}
}

$speedtest->end();

debug('Выполнение проверки средствами аж трёх регулярок заняло ' . $speedtest->result() . 's');

Выполнение проверки средствами аж трёх регулярок заняло 1.0723s

Второй из костылей пока что понравился больше всех по скорости.

Надо будет ещё проверить матчасть по модификатору 'u', но если он не лжёт слишком часто, то будет класс строк с полной поддержкой utf-8.

TF-Studio
На сайте с 17.08.2010
Offline
321
#10

function get_encoding($str)
{
$cp_list = array('UTF-8', 'windows-1251');
foreach ($cp_list as $k=>$codepage){
if (md5($str) === md5(iconv($codepage, $codepage, $str))){
return $codepage;
}
}
return 'utf-8';
}

Мне это понравилось

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий