Задать вопрос
  • Как вызвать функцию из файла загруженного через spl_autoload_register?

    Screamie
    @Screamie
    roma_zero, spl_autoload_register сама зарегистрирует вашу функцию автозагрузки для всего приложения. В дальнейшем, когда PHP будет находить название класса, который еще не загружен, он выполнит зарегистрированную функцию самостоятельно. И загрузит нужный файл с классом. По сути от вас требуется, только подключить файл _autoload.php в начало вашего index.php дальше все будет производиться автоматически.

    Если index.php лежит в корне приложения. То можете положить рядом с ним _autoload.php и подключить его в index.php например так:

    // Строгий режим отображения ошибок. Полезен для отладки
    error_reporting(E_ERROR|E_WARNING|E_PARSE|E_NOTICE);
    
    // Запускаем сессию (удалите, если не нужно)
    session_start();
    
    // Подключаем автозагрузчик. Он определит функцию и зарегистрирует ее в PHP
    include '_autoload.php';
    
    // .... код вашего приложения


    Если ваш класс подключается, а метод Web::get() все еще не выполняется, то скиньте код класса Web
  • Как в PHP выполнить очистку POST для массива?

    Screamie
    @Screamie
    Exploding, у меня в окружении строгие правила, поэтому получаю NOTICE, что есть гуд. Ибо автоматическая инициализация - прямой способ выстрелить себе в ногу (как и short_open_tag = on) ) Но спасибо за информацию. Не знал об этом забавном (нет) факте)))
  • Как в PHP выполнить очистку POST для массива?

    Screamie
    @Screamie
    Diversia, посмотрите выше по коду, не присваивается ли переменной $video значение входящего массива $_POST, если да, то вы просто ошиблись переменной. Если она нигде больше не используется, то удалите ее, что бы не плодить переменные.

    И исправьте ваш код таким образом:

    <?php //  Всегда используйте полный открывающий тег php вместо сокращенной версии
    
    $filterTr = array(
        'video' => array(
            'filter' => FILTER_SANITIZE_STRING,
            'flags' => FILTER_REQUIRE_ARRAY
        )
    );
    
    // Изменим название переменной с $filter на $res (от слова result) для удобочитаемости в дальнейшем 
    $res = filter_input_array(INPUT_POST, $filterTr);
    $res['video']['url'] = filter_var($res['video']['url'], FILTER_VALIDATE_URL, FILTER_REQUIRE_ARRAY);
    $res['video']['translators'] = filter_var($res['video']['translators'], FILTER_VALIDATE_FLOAT, FILTER_REQUIRE_ARRAY);
    $res['video']['type'] = filter_var($res['video']['type'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_REQUIRE_ARRAY);
    
    print "<pre>";
    var_dump($res['video']);
    print "</pre>";
    
    ?>
    <form method="post">
    <input name="video[url][]" type="text" value="test">
    <input name="video[translators][]" type="text" value="test">
    <input name="video[type][]" type="text" value="test">
    <button type="submit">Сохранить</button>
    </form>
  • Как сделать расписание игр команд?

    Screamie
    @Screamie
    gomer1726, просто уберите проверку на группу из if условия. Команды будут перебираться по порядку, если нужна именно случайная последовательность, то нужно будет создать копию массива команд, затем перемешать ее и использовать уже ее во вложенном цикле
  • Всегда ли объект должен валидным?

    Screamie
    @Screamie
    Привет! А зачем Presenter-у присваивать заведомо неверное значение для Document, если он с ним никуда не уедет? На мой взгляд такие вещи должны валидироваться до присваивания, сеттерами. Что касается полей isValid, то в теории можно представить такие объекты (не обладающие бизнес логикой), которые могут функционировать с невалидными полями какое-то время (например DTO). Думаю, что давать возможность присвоения неверных значений полям объекта, который отвечает за бизнес логику это путь во тьму)
  • Как создавать страницы по нажатию?

    Screamie
    @Screamie
    Все когда-то были на таком уровне. Читайте документацию. Смотрите уроки. Научитесь со временем
  • По каким причинам не открываются сайты c apache?

    Screamie
    @Screamie
    Сервер Apache запущен?

    Рекомендую посмотреть в сторону OpenServer
  • Как стать участником OpenSource проекта (технические вопросы)?

    Screamie
    @Screamie Автор вопроса
    Спасибо за ответ! Но я как раз хочу поработать в команде. Одному не особо весело, хочется совместной работы. Но кажется я уже понял суть. Нужно скачать чей-нибудь проект на GitHub и развернуть его у себя. Потом смотреть issue и править их если есть возможность. А после правок делать Pull request и ждать) Видимо, это вся хитрость, судя по количеству ответов на мой вопрос.
  • Как стать участником OpenSource проекта (технические вопросы)?

    Screamie
    @Screamie Автор вопроса
    Спасибо за ответ. Изначально текста было в три раза больше, но я поработал над собой) Вещи, которые очевидны для вас, могут быть не так очевидны для остальных. Особенно, для тех, кто не участвовал в подобном раньше. Решил спросить, что бы избежать путаницы в будущем и узнать в том числе и ваше мнение.
  • Как стать участником OpenSource проекта (технические вопросы)?

    Screamie
    @Screamie Автор вопроса
    Сергей: Думаю это была моя неудачная шутка. Поправлю вопрос, что бы не было недопонимания)
  • Как стать участником OpenSource проекта (технические вопросы)?

    Screamie
    @Screamie Автор вопроса
    Стыжусь не сервиса, а того, что в репах) А на Github приватные не бесплатно)
  • Почему не валидируется одно поле?

    Screamie
    @Screamie
    Мало данных, скиньте весь код класса. Возможно last_name нет в текущем сценарии, например.
  • YII2 Как создать гибкую модульную архитектуру?

    Screamie
    @Screamie Автор вопроса
    Владимир Солдатов: Понял вашу мысль, на самом деле сам сначала пытался реализовать именно так, через свой класс. И передавал в контроллер сформированный объект Page, работало неплохо, пока дело не дошло до фильтрации и изменения URL в админ панели.

    Когда пользователь использует фильтр вида /news/most-popular/2016, то первым делом в Базе ищется страница с URL = /news/most-popular/2016 и естественно ее там нет. Если бы не требовались динамические модули, то дело было бы за малым - написать отдельный Рул для фильтрации и отправлять на модуль. Но станица News в админке может быть перенесена.

    И адрес /news/most-popular/2016 для которого мы пропишем правила может стать /company/about/news/most-popular/2016 и соответственно правила перестанут работать, скрипт пойдет искать страницу в базу и попадем на 404. Сложность не в том, что бы передать управление на модуль, когда страница найдена. Сложность в том, что бы найти страницу по URL включающему любые фильтры и вложенность, не используя urlRules, т.к. URL формируется админом. Для этого и была предложена рекурсия в parseRequest() собственно, ваше предложение тоже упирается в кастомный parseRequest(), просто вы предлагаете вынести его в отдельный класс UrlRules.

    Когда мы находим страницу через рекурсию (в варианте Дмитрия Елисеева) мы отделяем ее URL в БД от параметров, ищем подключенный к ней модуль подменяем URL в pathInfo на путь к модулю склеиваем путь и параметры и заново пропускаем через UrlRules это сформированную строку.
  • YII2 Как создать гибкую модульную архитектуру?

    Screamie
    @Screamie Автор вопроса
    Владимир Солдатов: спасибо за ответ, но если хранить имя класса, то не получится парсить URL rules. Загвоздка в том, что нужно отделить уровень вложенности в админке, от рулсов в модуле. Поэтому рекурсия и нужна. Но рекурсия затратный процесс и сейчас размышляю над тем, не создать ли связанную таблицу, где хранить динамически формируемый URL для модуля по которому и чекать.
  • Как использовать плагин?

    Screamie
    @Screamie
    hollanditkzn: Node.js ничем не мешает. Просто укажите путь к Php в переменной Path, не удаляя от туда ничего и Php будет доступен в глобальной области видимости Windows. Можно проверить доступен ли php через консоль Windows, набрав php -v и нажав Enter. Если все сделали правильно то в ответе консоли будет информация о версии Php
  • Как использовать плагин?

    Screamie
    @Screamie
    hollanditkzn: Переменную среды на Window 7 можно создать так:

    Пуск -> Правой кнопкой на пункте Компьютер -> Свойства -> Дополнительные параметры системы -> Вкладка Дополнительно -> Переменные среды -> Системные переменные

    В таблице ищем Path, жмем изменить и дописываем в конец строки после ; Путь к папке с PHP Например C:\OpenServer\modules\php\PHP-5.6;
  • Как проверить существоние объекта в Yii2?

    Screamie
    @Screamie
    Lander: Можно и так, но в isGuest это и реализовано, свойство получает значение через метод getIsGuest(), который в свою очередь возвращает булев тип от метода getIdentity(), который как раз и проверяет на соответствие интерфейсу и делает парочку полезных дополнительных проверок (смотрит сессию и т.д.). Так что на мой взгляд isGuest в данном случае предпочтительней.

    И кстати, если топик стартер будет читать этот коммент, то объясню почему на локалке работало, а на сервере нет. Вероятнее всего, на локальной машине у вас иначе настроен error_reporting(). Php при запросе свойства не у объекта генерирует ошибку уровня NOTICE и если показ таких ошибок отключен то код отработает без генерации предупреждения. А вот на сервере NOTICE включены и поэтому там вы получаете ошибку.
  • Как проверить существоние объекта в Yii2?

    Screamie
    @Screamie
    Да, isGuest как раз для этого и сделана)
  • Как подключить jquery-simple-datetimepicker (jquery.simple-dtpicker.js)?

    Screamie
    @Screamie
    Видимо, какой-то конфликт. Мало данных. Скиньте логи консоли, что пишет js
  • YII2 Как создать гибкую модульную архитектуру?

    Screamie
    @Screamie Автор вопроса
    Денис Рыбин: Да, я тоже думаю в эту сторону, но как его написать - загадка. Url модулей динамические, могут иметь любой уровень вложенности и при этом должны поддерживать urlRules для модуля.

    Хочу выразить огромное спасибо Дмитрию Елисееву, за помощь, он предложил следующий вариант парсинга URL:


    В parseRequest:

    - Ищем /city/events/most-popular. Не нашлось.
    - Ищем /city/events. Нашлось. Тип "news". Запускаем рекурсию:

    $r = clone $request;
    $r->setPathInfo('news/most-popular');
    return $manager->parseRequest($r);


    Пока не знаю подойдет ли этот метод, но буду пробовать его. Отпишусь здесь, когда проверю. Если у кого-то есть идеи, то буду очень признателен, за помощь