From 3ffe085f3240b222d6c1b75caa3c1e7ae4c3095b Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Wed, 3 Apr 2024 13:39:51 +0500 Subject: [PATCH 1/6] add search function --- index.php | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/index.php b/index.php index 48f5fb1..bc93780 100644 --- a/index.php +++ b/index.php @@ -1,25 +1,21 @@ 30, * + 'name' => 'Jhon', * + 'age' => 23, * +] +* @param $id - ид искомого элемента * +* @return array - найденный элемент */ - -function sortPrice(array $array): array { - $price = []; - $count = []; - foreach ($array as $key => $row) { - $price[$key] = $row['price']; - $count[$key] = $row['count']; - } - array_multisort($price, SORT_DESC, $count, SORT_ASC, $array); - return $array; +function search($array, $id): ?array { + $rowId = array_search($id, array_column($array, 'id')); + return $array[$rowId]; } -//На выход должна вернуть отсортированный массив по ключу *price* DESC и во вторую очередь по *count* ASC: - -//[ ['price'=>12, 'count'=>4], ['price'=>10, 'count'=>2], ['price'=>8, 'count'=>4], ['price'=>8, 'count'=>5], ['price'=>5, 'count'=>5], ] - ?> @@ -32,13 +28,12 @@ function sortPrice(array $array): array { 10, 'count'=>2], - ['price'=>5, 'count'=>5], - ['price'=>8, 'count'=>5], - ['price'=>12, 'count'=>4], - ['price'=>8, 'count'=>4], + ['id'=>10, 'name'=>'Jhon', 'age'=>23], + ['id'=>32, 'name'=>'Alex', 'age'=>34], + ['id'=>54, 'name'=>'Bob', 'age'=>45], + ['id'=>6, 'name'=>'Mike', 'age'=>61], ]; - print_r(sortPrice($array)); + print_r(search($array, 54)); ?> \ No newline at end of file -- GitLab From 143c7d08f9e0fa00de034b2bd4d72e62c9266384 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Wed, 10 Apr 2024 17:31:49 +0500 Subject: [PATCH 2/6] add function2 --- index.php | 64 ------------------- src/Functions.php | 156 ---------------------------------------------- 2 files changed, 220 deletions(-) diff --git a/index.php b/index.php index 80c72a8..b6cf858 100644 --- a/index.php +++ b/index.php @@ -35,69 +35,5 @@ $func = new Hp\Test\Functions(); ]; print_r($func->search($array, 54)); ?> - -

Function 3

- uniqElements($arr)); - ?> - -

Function 4

- 'Смартфоны и гаджеты','depth' => 0,], - ['name' => 'Смартфоны, мобильные телефоны','depth' => 1,], - ['name' => 'Планшеты','depth' => 1,], - ['name' => 'Наушники и гарнитуры','depth' => 1,], - ['name' => 'Компьютеры и ноутбуки','depth' => 0,], - ['name' => 'Ноутбуки и аксессуары','depth' => 1,], - ['name' => 'Компьютеры и мониторы','depth' => 1,], - ['name' => 'Компьютерные комплектующие','depth' => 1,], - ['name' => 'Техника для дома','depth' => 0,], - ['name' => 'Техника для уборки','depth' => 1,], - ['name' => 'Товары для ухода за одеждой','depth' => 1,], - ['name' => 'Аксессуары для техники','depth' => 1,], - ['name' => 'Товары для дома и кухни','depth' => 0,], - ['name' => 'Посуда','depth' => 1,], - ]; - print_r($func->prepareMenu($aMenu)); - ?> - -

Function 5

- До НГ: "); - print($func->howDaysToNy(new DateTimeImmutable())); - ?> - -

Function 6

- Пятницы 13: "); - foreach($func->countFriday13(2024) as $date) { - print($date->format("Y-m-d l") . "\n"); - } - ?> - -

Function 7

- Разница дней: "); - print($func->diffDays(new DateTimeImmutable(), new DateTimeImmutable("2025-01-01"))); - ?> - -

Function 8

- readLogFile(__DIR__ . "/public/text.txt"); - ?> - -

Function 9

- readFileLineByLine(__DIR__ . "/public/text.txt") as $line) { - print($line); - } - ?> \ No newline at end of file diff --git a/src/Functions.php b/src/Functions.php index 3523f74..7460238 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -38,161 +38,5 @@ class Functions { $rowId = array_search($id, array_column($array, 'id')); return $array[$rowId]; } - - /** - * Удалить дубликаты, оставив только уникальные значения - * @param array $array - * @return array - */ - - function uniqElements(array $array): array { - return array_unique($array, SORT_REGULAR); - } - - //Выходной массив: - /** Array ( - * [0] => Array([0] => laravel, [1] => php) - * [1] => Array([0] => codeigniter, [1] => php) - * [3] => Array([0] => c++, [1] => java)) - * ) - */ - - /** - * Сгруппировать подразедлы в верхние разделы меню - * Дочерние элементы поместить в массив родителя с ключом submenu * - * Значение под ключом depth определяет уровень раздела * - * Массив $aMenu всегда начинается с элемента depth = 0, - * все последующие элементы с depth = 1 являются его дочерними * - * элементами * * - * @param array $aMenu * * - * @return array - */ - - function prepareMenu(array $aMenu): array { - $result = []; - foreach ($aMenu as $arr) { - if ($arr['depth'] === 0) { - $result[] = array( - 'name' => $arr['name'], - 'depth' => $arr['depth'], - 'submenu' => [] - ); - continue; - } - $result[array_key_last($result)]['submenu'][] = array( - 'name' => $arr['name'], - 'depth' => $arr['depth'], - ); - } - return $result; - } - - /** Выходные данные: - * $aMenu = [ - * [ - * 'name' => 'Смартфоны и гаджеты', - * 'depth' => 0, - * 'submenu' => [ - * ['name' => 'Смартфоны, мобильные телефоны','depth' => 1,], - * ['name' => 'Планшеты','depth' => 1,], - * ['name' => 'Наушники и гарнитуры','depth' => 1,] - * ,] - * ,], - * [ - * 'name' => 'Компьютеры и ноутбуки', - * 'depth' => 0, - * 'submenu' => [ - * ['name' => 'Ноутбуки и аксессуары','depth' => 1,], - * ['name' => 'Компьютеры и мониторы','depth' => 1,], - * ['name' => 'Компьютерные комплектующие','depth' => 1,],]], - * [ - * 'name' => 'Техника для дома', - * 'depth' => 0, - * 'submenu' => [ - * ['name' => 'Техника для уборки','depth' => 1,], - * ['name' => 'Товары для ухода за одеждой','depth' => 1,], - * ['name' => 'Аксессуары для техники','depth' => 1,],]], - * [ - * 'name' => 'Товары для дома и кухни','depth' => 0, - * 'submenu' => [ - * ['name' => 'Посуда','depth' => 1,],]], ]; - */ - - /** - * Функция рассчитывает кол-во дней до нового года - * @param DateTime $date дата от которой, необходимо рассчитать кол-во дней - * @return int - */ - function howDaysToNy(DateTimeImmutable $date): int { - $endYear = date("Y-12-31", date_timestamp_get($date)); - $dateInterval = date_diff(new DateTimeImmutable($endYear), $date); - return $dateInterval->format("%a") + 1; - } - - /** - * Вернет все пятницы 13 в году - * @param int $yaer год, в котором необходимо произвести расчет - * @return DateTimeImmutable[] - */ - function countFriday13(int $year): iterable { - $stardDate = new DateTime("{$year}-01-01 Friday"); - $year += 1; - $endDate = new DateTime("{$year}-01-01"); - $interval = new DateInterval('P7D'); - foreach(new DatePeriod($stardDate, $interval, $endDate) as $day) { - yield new DateTimeImmutable($day->format("Y-m-d")); - } - } - - /** - * Вернет кол-во дней между датами - * @param DateTimeImmutable $dateStart дата начала - * @param DateTimeImmutable $dateEnd дата окончания - * @return int - */ - function diffDays(DateTimeImmutable $dateStart, DateTimeImmutable $dateEnd): int { - $dateInterval = date_diff($dateStart, $dateEnd); - return $dateInterval->format("%a") ; - } - - /** - * Переделай своё решение 8 задачи: - * замени вывод всего текста из файла разом на - * построчный вывод используя yield - * @param string $filePath путь до файла - * @return void - */ - function readLogFile(string $filePath): void { - if (file_exists($filePath)) { - $text = ""; - $file = fopen($filePath, "r"); - while(!feof($file)) { - $line = fgets($file); - $text .= $line; - } - fclose($file); - print($text); - } - else print("Такого файла не существует."); - } - - - /** - * Переделай своё решение 8 задачи: - * замени вывод всего текста из файла разом на - * построчный вывод используя yield - * @param string $filePath путь до файла - * @return void - */ - function readFileLineByLine(string $filePath): iterable { - if (file_exists($filePath)) { - $file = fopen($filePath, "r"); - while(!feof($file)) { - yield fgets($file); - } - fclose($file); - } - else yield "Такого файла не существует."; - } } -- GitLab From bd86313a733a4aafb761f9065d338f53e472d559 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Wed, 10 Apr 2024 17:33:59 +0500 Subject: [PATCH 3/6] fix2 --- index.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/index.php b/index.php index b6cf858..a09bd29 100644 --- a/index.php +++ b/index.php @@ -17,10 +17,11 @@ $func = new Hp\Test\Functions();

Function 1

10, 'name'=>'Jhon', 'age'=>23], - ['id'=>32, 'name'=>'Alex', 'age'=>34], - ['id'=>54, 'name'=>'Bob', 'age'=>45], - ['id'=>6, 'name'=>'Mike', 'age'=>61], + ['price'=>10, 'count'=>2], + ['price'=>5, 'count'=>5], + ['price'=>8, 'count'=>5], + ['price'=>12, 'count'=>4], + ['price'=>8, 'count'=>4] ]; print_r($func->sortPrice($array)); ?> -- GitLab From b046b15d734b47d62ec0cd149f39d5d9fd5394a7 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Thu, 11 Apr 2024 11:25:28 +0500 Subject: [PATCH 4/6] refactoring --- vendor/autoload.php | 25 - vendor/composer/ClassLoader.php | 579 ------------------------ vendor/composer/LICENSE | 21 - vendor/composer/autoload_classmap.php | 10 - vendor/composer/autoload_namespaces.php | 9 - vendor/composer/autoload_psr4.php | 10 - vendor/composer/autoload_real.php | 36 -- vendor/composer/autoload_static.php | 36 -- 8 files changed, 726 deletions(-) delete mode 100644 vendor/autoload.php delete mode 100644 vendor/composer/ClassLoader.php delete mode 100644 vendor/composer/LICENSE delete mode 100644 vendor/composer/autoload_classmap.php delete mode 100644 vendor/composer/autoload_namespaces.php delete mode 100644 vendor/composer/autoload_psr4.php delete mode 100644 vendor/composer/autoload_real.php delete mode 100644 vendor/composer/autoload_static.php diff --git a/vendor/autoload.php b/vendor/autoload.php deleted file mode 100644 index a3d2b61..0000000 --- a/vendor/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ - private $vendorDir; - - // PSR-4 - /** - * @var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var list - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> - */ - private $prefixesPsr0 = array(); - /** - * @var list - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var array - */ - private $missingClasses = array(); - - /** @var string|null */ - private $apcuPrefix; - - /** - * @var array - */ - private static $registeredLoaders = array(); - - /** - * @param string|null $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return array> - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return list - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return list - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return array Array of classname => path - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. - * - * @return array - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE deleted file mode 100644 index f27399a..0000000 --- a/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php deleted file mode 100644 index 0fb0a2c..0000000 --- a/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,10 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3..0000000 --- a/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($baseDir . '/src'), -); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php deleted file mode 100644 index f82ac6e..0000000 --- a/vendor/composer/autoload_real.php +++ /dev/null @@ -1,36 +0,0 @@ -register(true); - - return $loader; - } -} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php deleted file mode 100644 index 7a21546..0000000 --- a/vendor/composer/autoload_static.php +++ /dev/null @@ -1,36 +0,0 @@ - - array ( - 'Hp\\Test\\' => 8, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Hp\\Test\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit3bc055e7cfe85029886df43c57958e8c::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit3bc055e7cfe85029886df43c57958e8c::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit3bc055e7cfe85029886df43c57958e8c::$classMap; - - }, null, ClassLoader::class); - } -} -- GitLab From f96f32f81259037b9298230c797577b5971c3c47 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Thu, 11 Apr 2024 11:25:35 +0500 Subject: [PATCH 5/6] refactoring --- composer.lock | 18 ++++++++++++ index.php | 13 +++++---- public/text.txt | 2 -- src/Functions.php | 74 ++++++++++++++++++++++++++++------------------- 4 files changed, 69 insertions(+), 38 deletions(-) create mode 100644 composer.lock delete mode 100644 public/text.txt diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..d2b7326 --- /dev/null +++ b/composer.lock @@ -0,0 +1,18 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "fb868aee4271b4f211fa6443b05e3b80", + "packages": [], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/index.php b/index.php index a09bd29..ff183a1 100644 --- a/index.php +++ b/index.php @@ -1,9 +1,10 @@ @@ -21,7 +22,7 @@ $func = new Hp\Test\Functions(); ['price'=>5, 'count'=>5], ['price'=>8, 'count'=>5], ['price'=>12, 'count'=>4], - ['price'=>8, 'count'=>4] + ['price'=>8, 'count'=>4], ]; print_r($func->sortPrice($array)); ?> @@ -29,9 +30,9 @@ $func = new Hp\Test\Functions();

Function 2

10, 'name'=>'Jhon', 'age'=>23], - ['id'=>32, 'name'=>'Alex', 'age'=>34], - ['id'=>54, 'name'=>'Bob', 'age'=>45], + ['id'=>10, 'name'=>'Jhon', 'age'=>23], + ['id'=>32, 'name'=>'Alex', 'age'=>34], + ['id'=>54, 'name'=>'Bob', 'age'=>45], ['id'=>6, 'name'=>'Mike', 'age'=>61], ]; print_r($func->search($array, 54)); diff --git a/public/text.txt b/public/text.txt deleted file mode 100644 index 58f1226..0000000 --- a/public/text.txt +++ /dev/null @@ -1,2 +0,0 @@ -Раз, два, три, четыре, -Пять, шесть, семь, восемь. \ No newline at end of file diff --git a/src/Functions.php b/src/Functions.php index 7460238..2c2ad2a 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -1,42 +1,56 @@ 12, 'count'=>4], ['price'=>10, 'count'=>2], ['price'=>8, 'count'=>4], ['price'=>8, 'count'=>5], ['price'=>5, 'count'=>5], ] - + /** + * На выход должна вернуть отсортированный массив по ключу *price* DESC + * и во вторую очередь по *count* ASC: + * [['price'=>12, 'count'=>4], ['price'=>10, 'count'=>2], ['price'=>8, 'count'=>4], + * ['price'=>8, 'count'=>5], ['price'=>5, 'count'=>5],] + */ - /* Найдет элемент с указаным id * - * @param array $array - массив, содержащий элементы со структурой * - [ - * 'id' => 30, * - 'name' => 'Jhon', * - 'age' => 23, * - ] - * @param $id - ид искомого элемента * - * @return array - найденный элемент - */ - function search($array, $id): ?array { - $rowId = array_search($id, array_column($array, 'id')); - return $array[$rowId]; + /** + * Найдет элемент с указаным id + * @param array $array - массив, содержащий элементы со структурой + * [ + * 'id' => 30, + * 'name' => 'Jhon', + * 'age' => 23, + * ] + * @param $id - ид искомого элемента + * @return ?array - найденный элемент + */ + + public function search(array $array, int $id): ?array + { + $rowId = array_search($id, array_column($array, 'id'), true); + if ($rowId) { + return $array[$rowId]; + } + return null; } } -- GitLab From 392559216a7b634723cee4a697d7e11787538076 Mon Sep 17 00:00:00 2001 From: "a.shamavov" Date: Thu, 11 Apr 2024 11:26:14 +0500 Subject: [PATCH 6/6] gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49ce3c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/vendor \ No newline at end of file -- GitLab