Профиль пользователя заблокирован сроком с 26 июня 2017 г. и навсегда по причине: систематические нарушения регламента работы сервиса: размещение нецензурной лексики; оскорбления в адрес пользователей, модераторов и специалистов службы поддержки
  • Велосипед "ORM" для автоматизации. Следует ли продолжать и в каком направлении? Интересно ли?

    trevoga_su
    @trevoga_su
    1 - Полезно ли это будет хоть кому-то кроме меня?
    нет, но для тебя это может стать вполне приемлемым инструментом, если отточишь до блеска.

    2 - В каком направлении двигаться и в чем косяки такого способа работы с базой?
    твой косяк в том, что ты пишешь сам не понимая чего и называешь это все очень громкими именами, такими как ORM
    при этом ты все смешал в кучу и я не вижу тут никакой ORM
    я вижу попытку написать 1001 никому не нужный билдер запросов

    ORM должна работать на основе паттернов, таких как ActiveRecord или DataMapper, получать объекты моделей, а не просто stdClass и транслировать эти объекты обратно в базу:

    data-mapper.gif

    вот эти все дрочи
    Model::data(array("status"=>2))->where(array("id"=>2))->update();
    они никому не нужны. потому что реальные запросы гораздо более сложны, чем выборка по одному условию where. есть запросы, которые просто невозможно уложить в билдеры. ты же делаешь акцент на билдеры, а должен делать на ORM. Вот тебе пример data mapper класса. для его работоспособности используется простой билдер, но сложный sql пишется руками. и практически всегда возвращаются не просто объекты, а объекты моделей, ассоциируемые с этим data mapper. Обрати внимание, что почти в каждом методе вызываются
    return parent::result2objects(...);
    return parent::findModelListByParams($params);
    return parent::findModelByParams($params);


    т.е. ORM всегда отдает реальные доменные объекты, а не просто stdClass.
    Ответ написан
    Комментировать
  • Чем отличаются дата маппер и репозиторий?

    trevoga_su
    @trevoga_su
    design-pattern.ru/patterns/repository.html

    откровенно говоря, херня а не паттерн. типа синтаксический сахар + коллекция объектов

    боюсь, кроме автора никто не даст ответ на этот вопрос. это очень частный случай очень расплывчатый паттерн.
    Ответ написан
    Комментировать
  • С чего начать изучать php7?

    trevoga_su
    @trevoga_su
    Хотелось бы не сразу начать плохо кодить, а сначала попытаться чисто писать
    писать "чисто" можно на и на php 4, это зависит не от языка, а от человека.

    хотелось бы изучить php7
    визитки на них делать неудобно
    любую книгу по php5, котерова например
    Ответ написан
    Комментировать
  • Почему mysql ругается на пустые значения при вставке?

    trevoga_su
    @trevoga_su
    запроса на вставку - нет
    структуры таблицы - нет

    тут гадалок нет
    Ответ написан
    Комментировать
  • Где именно формировать сообщение?

    trevoga_su
    @trevoga_su
    Правильно ли так формировать уведомления?
    нет
    после любого post-запроса надо делать header: location

    как передать уведомления - www.phpinfo.su/articles/theory/peredacha_dannyx_po...
    Ответ написан
    1 комментарий
  • Как сделать разграничение ролей на сайте и безопасной авторизацию админа?

    trevoga_su
    @trevoga_su
    самое простое:
    пользователь привязывается к роли
    роль - определение, к каким модулям системы разрешен доступ. либо разрешен, либо нет
    в конкретном модуле проверять роль залогиненного пользователя на доступ к текущему модулю системы

    вот пример для понимания - www.adverts.ru/admin demo demo
    зайди в раздел "Административные группы"
    пользователь demo прикреплен к группе demo, а для группы demo разрешено только просмотр списка объявлений и списка групп.
    Ответ написан
  • Что изучать дальше?

    trevoga_su
    @trevoga_su
    Я более менее уверенно знаю CSS и HTML
    уверяю тебя, ты не знаешь и 1%.

    JS/PHP/Bootstrap/CMS
    у тебя в голове каша
    ты выучил HTML и CSS - это стандартизированные технологии на которых держится базис веба и на которых он будет держаться еще лет 30 минимум.
    JavаScript, PHP - это языки программирования.

    jQuery - это одна из многих, но очень популярная библиотека для упрощения работы с JS
    Bootstrap - это набор инструментов для создания сайтов
    CMS - это система управления сайтом, написанная на каком-либо языке

    учить ты должен в первую очередь технологии - они должны для тебя быть в приоритете. Если ты знаешь технологию, у тебя не будет проблем с библиотеками и фреймворками.
    Если ты начинаешь, скажем, учить jQuery БЕЗ знания JavaScript, то цена тебе как специалисту ноль.

    Т.е. нельзя буть хорошим программистом, зная исключительно технологии "высокого" уровня. Нужно знать и понимать "низкий" уровень - языки программирования и стандарты W3C
    Ответ написан
    1 комментарий
  • В чем суть роутера на php?

    trevoga_su
    @trevoga_su
    Комментировать
  • Sql оператор IN в подготовленном запросе yii2?

    trevoga_su
    @trevoga_su
    как просмотреть sql запрос который в итоге получился. Ранее мне это не требовалось
    вот поэтому все эти ваши PDO - лютое унылое говно, с которым невозможно работать.

    www.database.phpinfo.su
    Ответ написан
  • Как сделать чтобы AUTO INCREMENT заполнял удалённые значения (например id: 1,2,3,4. Удалил 3. След. добавляемое 3, а не 5)?

    trevoga_su
    @trevoga_su
    Господи, но почему столько идиотов?

    И ведь не один не сказал, что этого делать не надо. Что вопрос лишен смысла и практической пользы. Что так никто не делает.

    Человек же 2 дня назад учиться начал судя по всему, а ему уже сразу заведомо ложные решения дают.

    автор, ты знаешь какой максимальный счетчик у типа INT поля таблицы в mysql? Я тебе отвечу: 4294967295 - это четыре миллиарда двести девяносто четыре миллиона девятьсот шестьдесят семь тысяч двести девяносто пять.

    теперь ответь на вопрос - ты правда думаешь, что твоя "задача" имеет какую-то пользу или смысл?
    Ответ написан
    7 комментариев
  • Какие вы знаете хорошие книги по ООП PHP?

    trevoga_su
    @trevoga_su
    litresp.ru/chitat/ru/%D0%91/buch-gradi/objektno-or...

    -- вот. Это именно та книга, которая тебе нужна. Это не учебник, а своего рода наставление, она дает понимание.
    Сейчас ты должен прочитать именно эту книгу, а не вдаваться в тонкости конкретных языков или шаблонов проектирования. Всю книгу можно не читать. Когда ты поймешь, зачем нужны объекты - тогда и начинай писать на классах, заглядывая в мануал по PHP.

    ,честно говоря не вижу пока что особой нужды в ооп , почему бы не использовать простые функции .Не судите строго это мой первый язык программирования
    если php твой первый язык и ты еще не написал на функциях какой-то готовый проект(блог, сайт, и тд), если ты еще многое не знаешь в php, путаешься в синтаксисе, то пока ооп тебе равно. ты сам потом к нему придешь, неизбежно.
    Ответ написан
    Комментировать
  • Есть Хардкор книга для изучения PHP?

    trevoga_su
    @trevoga_su
    читать и плакать
    пытать и вешать
    мануал почитай, коли опыт в программировании уже есть
    Ответ написан
    Комментировать
  • Как обезопасить себя при сотрудничестве с программистами-фрилансерами?

    trevoga_su
    @trevoga_su
    Неуловимый Джо — персонаж некогда распространенного онигдота, иносказательно обозначающий нечто, известное или распространенное на уровне легендарности, но по сути дела, никому на йух не нужное.

    Анекдот

    Городок в западно-американской степи. Салун. За столом сидят два ковбоя, местный и приезжий, и пьют виски. Вдруг по улице кто-то проносится на огромной скорости, паля во все стороны из револьверов. В салуне никто и ухом не ведёт. Приезжий местному:
    — Билл?
    — Да, Гарри?
    — Что это было, Билл?
    — Это был Неуловимый Джо , Гарри.
    — А почему его зовут Неуловимым Джо , Билл?
    — Потому что его никто ещё не поймал, Гарри.
    — А почему его никто ещё не поймал, Билл?
    — Потому что он нафиг никому не нужен, Гарри.
    (c) lurkmore.ru
    Ответ написан
    Комментировать
  • Использование конструкторов и прототипов javascript?

    trevoga_su
    @trevoga_su
    Нужно ли это верстальщику?
    глубоко знать и понимать конструкторы и прототипы javascript вряд ли, а вот знать язык - надо.
    Ответ написан
    Комментировать
  • Что за формат такой .0000 и как его лучше хранить в БД?

    trevoga_su
    @trevoga_su
    убирая 0 в начале при сохранении
    ггггг......
    .1
    1.
    1.1

    это все float
    Ответ написан
    Комментировать
  • Как добавить ip клиента в лог php_errors.log?

    trevoga_su
    @trevoga_su
    error_log($message, 0);
    Ответ написан
    Комментировать
  • Что значит Используйте кеш браузера?

    trevoga_su
    @trevoga_su
    все просто
    допустим, у вас есть статья на сайте.
    у статьи есть дата публикации - LastModifiedDate.
    мы можем на этапе формирования конечного html-кода страницы проверить, была ли ранее просмотрена эта статья или нет в этом браузере.
    если статья была ранее просмотрена - отдаем 304 заголовок и все.
    304 Not Modified — сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела.


    Вот пример кода из реального проекта:

    class Http_Request {
    
    	/**
    	 * Возвращает TRUE, если дата (обычно документа) $data является устаревшей
    	 * по отношению к HTTP заголовку If-Modified-Since.
    	 *
    	 * @param $date DateTime
    	 * @return boolean
    	 */
    	public static function IfModifiedSince(DateTime $date)
    	{
    	    if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
    	    {
    	        $if_modified_since = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
    	        if ($if_modified_since && $if_modified_since >= $date->getTimestamp())
    	        {
    	            return false;
    	        }
    	    }
    	    return true;
    	}
    
    	//....
    }
    
    // на уровне контроллера 
    // дата не изменилась - отдаем 304 заголовок, браузер возьмет страницу из кэша
    if (!Http_Request::IfModifiedSince($advert->getLastModifiedDate()))
    {
        $this->getResponse()->setHttpStatusCode(304);
        exit;
    }
    // дата была изменена - ставим заголовок Last-Modified с актуальной датой статьи 
    $this->getResponse()->setHeader('Last-Modified', $advert->getLastModifiedDate()->formatHttpDate());
    $this->getResponse()->setHeader('Cache-Control', 'no-cache, must-revalidate');


    Как посмотреть. Если у тебя есть в браузере расширение live http headers, можешь отследить заголовки на этой странице - www.adverts.ru/advert/79941.xhtml
    В первый заход на эту страницу будут такие заголовки:


    заголовки запроса:
    GET /advert/79941.xhtml HTTP/1.1
    заголовки ответа:
    HTTP/1.1 200 OK
    Last-Modified: Tue, 12 Apr 2016 17:13:03 GMT

    при втором заходе:


    заголовки запроса:
    GET /advert/79941.xhtml HTTP/1.1
    If-Modified-Since: Tue, 12 Apr 2016 17:13:03 GMT
    заголовки ответа:
    HTTP/1.1 304 Not Modified
    Ответ написан
    Комментировать
  • Адекватная ли фильтрация POST данных?

    trevoga_su
    @trevoga_su
    хрень
    вот так надо:
    /**
         * Очищает массив от пробелов и слэшей.
         *
         * @param array
         * @return array
         */
        private static function clearData(&$in)
        {
            if ($in && is_array($in)) {
                foreach ($in as $key => $value) {
                    if (is_array($value)) {
                        self::clearData($in[$key]);
                    } else {
                        $value = trim($value);
    
                        if (get_magic_quotes_gpc()) {
                            $value = stripslashes($value);
                        }
    
                        $in[$key] = $value;
                    }
                }
            }
    
            return $in;
        }

    т.е. приходимся рекурсивно по POST (и GET и REQUEST кстати тоже надо) и чистим от пробелов и, если у вас версия php с магическими кавычками, то от возможных слэшей.

    далее, одна из частых ошибок новичков - обрабатывать данные через htmlspecialchars() или её эквивалент как у тебя. хз где этому учат, вероятно есть какая-то секта, не иначе.

    ЗАПОМНИТЕ РАЗ И НАВСЕГДА - htmlspecialchars нужен ТОЛЬКО при выводе данных в шаблон. htmlspecialchars нужен что бы символы, являющиеся частью языка HTML преобразовывать в мнемоники, т.е. в эквиваленты, что бы верстка не поехала, когда в ваших данных встретятся символы <>" и '

    в базу надо ВСЕГДА записывать данные как есть - что пришло, то и записываем.
    Ответ написан
    2 комментария