• С чего можно начать изучение Symfony и стоит ли начинать знакомство с фреймворками именно с него?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Да, изучение фреймворков обязательно надо начинать с Симфони.
    Ларавель - попсовый фрейворк, который тоже может быть использован правильно, но рекламируется он как инструмент для "фигак-фигак - и в продакшен". Все туториалы по нему показывают, как сделать побыстрее, но этот подход выйдет боком в будущем. Ларавель для изучения - это зло.

    Симфони же сразу приучает, как делать правильно: не дает намусорить в контроллере, приучает делать хелперы без жестких зависимостей, показывает, как делать репозитории для обработки данных. Да это труднее, но избавит от больших проблем в будущем.

    При наличии готового проекта лучше всего изучать именно на этом готовом проекте. Практика в 100 раз лучше любой теории.
    Ответ написан
    2 комментария
  • На чём вы разворачиваете Symfony?

    Tenskwatawa
    @Tenskwatawa
    php/js
    Для symfony можно подыскать готовые контейнеры на докер хабе. Вот один например
    https://hub.docker.com/r/whatwedo/symfony3/
    Ответ написан
    Комментировать
  • На чем лучше и быстрее написать парсер (PHP)?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    DiDom: https://github.com/Imangazaliev/DiDOM

    + высокая скорость работы (сравнение с другими парсерами)
    + хорошая дока
    + большое количество поддерживаемых селекторов
    + самое главное - тесты

    Простой пример:

    $document = new Document('http://www.example.com/', true);
    
    echo $document->first('title::text');


    Чуть посложнее - парсим все ссылки:

    $links = $document->find('a[href]::attr(href)');
    
    var_dump($links);


    Еще сложнее - получить адреса всех ссылок-картинок:

    $links = $document->find('a[href]:has(img)::attr(href)');
    
    var_dump($links);


    Другие варианты:
    - Symfony DomCrawler
    - Zend Dom Query
    Ответ написан
    3 комментария
  • Парсим/грабим веб-страницы без мусора?

    @beatleboy
    Apist - отличная вещь! Позволяет с легкостью парсить страницы, обращайся к элементам в стиле jquery. Пример парсинга Хабра:

    public function index()
    {
    	return $this->get('/', [
    		'title' => Apist::filter('.page_head .title')->text()->trim(),
    		'posts' => Apist::filter('.posts .post')->each([
    			'title'      => Apist::filter('h1.title a')->text(),
    			'link'       => Apist::filter('h1.title a')->attr('href'),
    			'hubs'       => Apist::filter('.hubs a')->each(Apist::filter('*')->text()),
    			'author'     => [
    				'username'     => Apist::filter('.author a'),
    				'profile_link' => Apist::filter('.author a')->attr('href'),
    				'rating'       => Apist::filter('.author .rating')->text()
    			]
    		])
    	]);
    }


    Возвращает данные массивом:
    {
        "title": "Публикации",
        "posts": [
            {
                "title": "Проверьте своего хостера на уязвимость Shellshock (часть 2)",
                "link": "http:\/\/habrahabr.ru\/company\/host-tracker\/blog\/240389\/",
                "hubs": [
                    "Блог компании ХостТрекер",
                    "Серверное администрирование",
                    "Информационная безопасность"
                ],
                "author": {
                    "username": "smiHT",
                    "profile_link": "http:\/\/habrahabr.ru\/users\/smiHT\/",
                    "rating": "26,9"
                }
            },
            {
                "title": "Курсы этичного хакинга и тестирования на проникновение от PentestIT",
                "link": "http:\/\/habrahabr.ru\/company\/pentestit\/blog\/240995\/",
                "hubs": [
                    "Блог компании PentestIT",
                    "Учебный процесс в IT",
                    "Информационная безопасность"
                ],
                "author": {
                    "username": "pentestit-team",
                    "profile_link": "http:\/\/habrahabr.ru\/users\/pentestit-team\/",
                    "rating": "36,4"
                }
            },
            ...
        ]
    }

    Тут подробнее
    Ответ написан
    Комментировать
  • Перспективы у языка GO?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    1) Язык - проще некуда. Его собственно и стали разрабатывать как человеческую замену плюсам.
    2) Огромное количество библиотек, любую задачу можно решить на нём уже сейчас.
    3) Скорость и компилируемость.

    Вот поэтому лично я (и не только я, как выяснилось) считаю его лучшим "общим" языком программирования сегодня, именно Go нужно преподавать в школах вместо Pascal. Он прост для понимания и строг как Pascal, и в то же время прикладной, как Python. Вот пруф: Go как первый язык программирования для школьников

    p.s. ответ не топикстартеру, а всем программистам, кто прочитает. Топикстартер явно не программист и не собирается им быть.
    Ответ написан
    5 комментариев
  • Можно ли использовать type hinting для Object?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    how уже ответил и дал по поводу интерфейса дельное замечание. Но оно не раскрыто подробнее, новички в ООП не поймут. Исправляю ситуацию, так как это полезный трюк:

    1. Создаем пустой интерфейс
    interface Object {
       // Здесь ничего нет
    }

    Его название потом и будем использовать для type hinting.

    2. Имплементируйте этот интерфейс в нужных классах:
    class MyBaseClass implements Object {
       // ваш обычный код класса
    }


    3. Теперь все будет работать, например:
    function myFunc (Object $obj);
    Ответ написан
    Комментировать
  • Какой выбрать php microframework?

    SPAHI4
    @SPAHI4
    реактовцы - это не девы, а прокидыватели пропсов
    Я использовал Silex, мне понравилось
    Ответ написан
    Комментировать
  • Чем проверить backup на php шеллы?

    @IceJOKER
    Web/Android developer
    Да там может быть 1 строчка кода, которая может нахрен снести весь сайт или дать полный доступ злоумышленнику.
    Если вы дружите с php, то открываете каждый файл и проверяете, можете автоматизировать поверхностный поиск, но 99% гарантии тогда не будет, если не дружите, то нанимаете программиста и за $$$$$ вам все сделают.

    Чтоб не быть голословным, простой пример кода(шелла):
    //КОД УДАЛЕН
    ^^^
    Добавляем эту строчку кода в какой-нибудь файл(зависит от структуры кода), далее просто отправляем POST запрос на нужную страницу и вуаля..
    Учитывая, что ТОТ чувак знает что да как в вашем скрипте и учитывая, что у него был доступ к нему, то уж поверьте, есть уйму разных вариантов, как докучать вам. Что там код выше, можно просто оставить какое-нибудь поле без фильтрации и уже помощью него достать информацию из бд или сделать что-то иное
    Ответ написан
  • Какие инструменты вы используете для работы с MongoDB?

    AlexShkor
    @AlexShkor
    CTO at Paralect.com
    Из всех desktop Robomongo однозначно лучшая. Бесплатная да еще и open-source.
    В конце это недели выходит версия 0.8.
    Ответ написан
    Комментировать