Ответы пользователя по тегу PHP
  • Как правильно спроектировать конструктор форм на PHP?

    @genteelknight
    Fullstack web developer
    Используйте библиотеку для работы с формами, там уже есть нужные абстракции.

    Symfony Forms
    Nette Forms
    Ответ написан
    Комментировать
  • Расширение/наследование автозагрузчика Composer'а?

    @genteelknight
    Fullstack web developer
    В комментах к самому вопросу напихали тебе по самое не хочу и местами даже по делу. Но возможно в твоем случае по другому никак не сделать. Лично я за первый вариант. Самому приходилось патчить загрузчик композера на ряде проектов, примерно так это выглядит:

    <?php
    
    use Composer\Autoload\ClassLoader;
    use function Composer\Autoload\includeFile;
    
    if (file_exists($composerAutoloaderPath = __DIR__ . '/../../../autoload.php')) {
        $patchedLoader = new class(require $composerAutoloaderPath) {
            private $loader;
    
            public function __construct(ClassLoader $loader)
            {
                $loader->unregister();
                $this->loader = $loader;
            }
    
            public function register($prepend = false): void
            {
                spl_autoload_register([$this, 'loadClass'], true, $prepend);
            }
    
            public function unregister(): void
            {
                spl_autoload_unregister([$this, 'loadClass']);
            }
    
            /**
             * Loads the given class or interface.
             * @param string $class The name of the class
             * @return bool True if loaded, null otherwise
             */
            public function loadClass($class): bool
            {
                if ($file = $this->loader->findFile($class)) {
                    includeFile($file);
    
                    // дополнительные патчи здесь
    
                    return true;
                }
    
                return false;
            }
        };
    
        $patchedLoader->register(true);
    }


    Вместо vendor/autoload.php подключаешь файл со своим лоадером.

    Этот вопрос ты можешь адресовать разработчикам пакетов которые я подключаю в своем проекте.


    По этому моменту даже интересно какие пакеты навязывают использование глобального состояния.
    Ответ написан
    1 комментарий
  • Red Bean PHP - Связи, как вывести уникальные значения?

    @genteelknight
    Fullstack web developer
    Перед выводом сгруппируй все значения по свойству в отдельный массив и выводи уже их. Как-то так:

    <?php
    
    $ad = new  Ads();
    $ad = $ad->getAd(111);
    
    $parameters = [];
    
    foreach ($ad->ownBindsList as $bind) {
    	if (!isset($parameters[$bind->parametrs->name])) {
    		$parameters[$bind->parametrs->name] = [];
    	}
    
    	$parameters[$bind->parametrs->name][] = $bind->values->name;
    }
    
    foreach ($parameters as $key => $values) {
    	echo $key . ': ' . implode(', ', $values) . PHP_EOL;
    }
    Ответ написан
    1 комментарий
  • Как сгенерировать диапазон дат в Faker Laravel?

    @genteelknight
    Fullstack web developer
    Даты одинаковые, потому что ты сначала начальную модифицируешь, а потом новую переменную создаешь. Тут надо либо DateTimeImmutable использовать, либо клонировать начальную дату:

    $startDate = $faker->dateTimeThisYear("-30 days");
        $endDate = (clone $startDate)->modify("+1 day");
    Ответ написан