chore: Аннотации к типам

This commit is contained in:
origami11@yandex.ru 2025-10-22 17:48:37 +03:00
parent e2ba6bd46e
commit e5713e9015
28 changed files with 305 additions and 110 deletions

View file

@ -12,7 +12,15 @@ class Drawing
const ALIGN_CENTER = "center";
const ALIGN_RIGHT = "right";
static function drawrectnagle(GdImage &$image, int $left, int $top, int $width, int $height, array $rgb): void
/**
* @param GdImage $image
* @param int $left
* @param int $top
* @param int $width
* @param int $height
* @param array $rgb
*/
static function drawRectangle(GdImage &$image, int $left, int $top, int $width, int $height, array $rgb): void
{
$color = imagecolorallocate($image, $rgb[0], $rgb[1], $rgb[2]);
$right = $left + $width;
@ -25,6 +33,19 @@ class Drawing
/**
* http://ru2.php.net/imagettftext
*
* @param GdImage $image
* @param int $size
* @param float $angle
* @param int $left
* @param int $top
* @param int $color
* @param string $font
* @param string $text
* @param int $max_width
* @param int $max_height
* @param string $align
* @param string $valign
*/
static function imagettftextbox(
GdImage &$image,
@ -115,7 +136,6 @@ class Drawing
return $largest_line_height * count($lines);
}
function imagettftextSp(GdImage $image, float $size, float $angle, int $x, int $y, int $color, string $font, string $text, int $spacing = 0)
{
if ($spacing == 0) {

View file

@ -7,7 +7,7 @@ use GdImage;
class Image
{
/**
* @param $uri
* @param string $uri
* @return GdImage|false
*/
static function load($uri): GdImage|false

View file

@ -2,10 +2,16 @@
namespace ctiso\Tools;
class StringUtil {
class StringUtil
{
// from creole
static function strToArray(string $str): array {
/**
* Преобразует строку в массив
* @param string $str
* @return array
*/
static function strToArray(string $str): array
{
$str = substr($str, 1, -1); // remove { }
$res = [];
@ -13,7 +19,7 @@ class StringUtil {
$in_subarr = 0;
$toks = explode(',', $str);
foreach($toks as $tok) {
foreach ($toks as $tok) {
if ($in_subarr > 0) { // already in sub-array?
$subarr[$in_subarr][] = $tok;
if ('}' === substr($tok, -1, 1)) { // check to see if we just added last component
@ -21,7 +27,7 @@ class StringUtil {
$in_subarr--;
}
} elseif ($tok[0] === '{') { // we're inside a new sub-array
if ('}' !== substr($tok, -1, 1)) {
if ('}' !== substr($tok, -1, 1)) {
$in_subarr++;
// if sub-array has more than one element
$subarr[$in_subarr] = [];
@ -32,26 +38,37 @@ class StringUtil {
} else { // not sub-array
$val = trim($tok, '"'); // remove " (surrounding strings)
// perform type castng here?
$res[] = $val;
$res[] = $val;
}
}
return $res;
}
//Нормализация строк на русском
static function normalizeRussian(string $str): string {
$result = preg_replace('/\s+/',' ', $str);
/**
* Нормализация строк на русском
* @param string $str
* @return string
*/
static function normalizeRussian(string $str): string
{
$result = preg_replace('/\s+/', ' ', $str);
if (is_string($result)) {
$result = trim($result); //Замена длинных пробелов на одинарные, пробелы по краям
$result = mb_strtolower($result);
$result = preg_replace('/ё/','е', $str); //е на ё
$result = preg_replace('/ё/', 'е', $str); //е на ё
}
return $result;
}
//Проверка равенства двух строк на русском языке.
static function equalRussianCheck($str1,$str2): bool {
/**
* Проверка равенства двух строк на русском языке.
* @param string $str1
* @param string $str2
* @return bool
*/
static function equalRussianCheck($str1, $str2): bool
{
return self::normalizeRussian($str1) == self::normalizeRussian($str2);
}
@ -61,33 +78,52 @@ class StringUtil {
* output: true
* input: $str="foo" $variants="foo1|foo2|foo3"
* output: false
*/
static function compare_string_to_variants($str, string $variants){
*
* @param string $str
* @param string $variants
* @return bool
*/
static function compare_string_to_variants($str, string $variants)
{
$variants_array = explode('|', $variants);
$founded = false;
foreach ($variants_array as $variant) {
$founded = $founded || self::equalRussianCheck($variant, $str);
$founded = $founded || self::equalRussianCheck($variant, $str);
}
return $founded;
}
static function mb_str_split(string $str): array|false {
/**
* Разбивает строку на массив символов
* @param string $str
* @return array|false
*/
static function mb_str_split(string $str): array|false
{
return preg_split('~~u', $str, -1, PREG_SPLIT_NO_EMPTY);
}
static function mb_strtr($str, $from, $to) {
/**
* Заменяет символы в строке на символы из другой строки
* @param string $str
* @param string $from
* @param string $to
* @return string
*/
static function mb_strtr($str, $from, $to)
{
return str_replace(self::mb_str_split($from), self::mb_str_split($to), $str);
}
static function encodestring(string $st): string
{
$st = self::mb_strtr($st,"абвгдеёзийклмнопрстуфхъыэ !+()", "abvgdeeziyklmnoprstufh_ie_____");
$st = self::mb_strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ", "ABVGDEEZIYKLMNOPRSTUFH_IE");
$st = self::mb_strtr($st, "абвгдеёзийклмнопрстуфхъыэ !+()", "abvgdeeziyklmnoprstufh_ie_____");
$st = self::mb_strtr($st, "АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ", "ABVGDEEZIYKLMNOPRSTUFH_IE");
$st = strtr($st, [
" " => '_',
"." => '_',
"," => '_',
"?" => '_',
"?" => '_',
"\"" => '_',
"'" => '_',
"/" => '_',
@ -95,18 +131,38 @@ class StringUtil {
"%" => '_',
"#" => '_',
"*" => '_',
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"Й"=>"i", "й"=>"ie", "ё"=>"Ye",
""=>"N"
"ж" => "zh",
"ц" => "ts",
"ч" => "ch",
"ш" => "sh",
"щ" => "shch",
"ь" => "",
"ю" => "yu",
"я" => "ya",
"Ж" => "ZH",
"Ц" => "TS",
"Ч" => "CH",
"Ш" => "SH",
"Щ" => "SHCH",
"Ь" => "",
"Ю" => "YU",
"Я" => "YA",
"Й" => "i",
"й" => "ie",
"ё" => "Ye",
"" => "N"
]);
return strtolower($st);
}
static function validate_encoded_string(string $st): int|false {
/**
* Проверяет, является ли строка кодированной
* @param string $st
* @return int|false
*/
static function validate_encoded_string(string $st): int|false
{
$enc_st = self::encodestring($st);
return preg_match('/^[\w_-]+(\.[\w_-]+)?$/', $enc_st);
}
}
}