• Post и Get запросы, какая между ними разница и что лучше и для каких целей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

    Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

    GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

    Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
    1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
    2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате 'ключ'='значение' и в качестве разделителя используется знак амперсанда (&)
    Пример:
    GET /index.php?name=Андрей&surname=Галкин
    это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
    3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

    Чаще всего пост запрос используется в формах (для отправки данных).

    Например у нас есть форма для входа 2 поля логин и пароль.

    Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

    А вот если бы мы указали методом POST то мы бы получили следующий запрос:
    POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

    Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

    В общем подводя итог:
    GET - это чтобы получить определенную страницу в определенном виде ( сортировка, текущая страница в блоге, строка поиска и т.п. ).
    POST - для оправки данных которые не влияют на отображение страницы, в том плане что эти данные влияют только на результат выполнения скрипта ( логины, пароли, номера кредиток, сообщения и т.п. ).

    И еще одна хорошая новость их можно комбинировать, например
    POST /index.php?page=login (login=Андрей&password=123) Думаю я уже достаточно объяснил что из этого получится и какие параметры в какой массив попадут.
    Ответ написан
    2 комментария
  • PDO или ORM в PHP?

    m_z
    @m_z
    Ошибка в понимании разницы между PDO и ORM, вопрос звучит как «ложка или тарелка за ужином»

    PDO это DBAL — простой интерфейс для работы с базой данных, который предоставляет одинаковые методы для работы с различными базами данными, поэтому вам не надо задумываться с какой именно БД мы работаем в текущий момент.

    ORM — из википедии — is a programming technique for converting data between incompatible type systems in object-oriented programming languages. Т.е. техника конвертации обычных таблиц, как в реляционных бд, в объекты. Это и очевидно, с обычными массивами работать трудно, а FETCH_OBJECT это всеравно не ОО-подоход.

    Одна технология дополняет другую.

    Теперь про propel и doctrine.

    Doctrine 1 мне не понравился потому, что в него добавили кучу непонятных фич и в конечном результате вышла каша, трудная для изучения (для примера, три способа извлечения данных из сущности, непонятная абстракция 'Table').

    Propel. скорее мертв, чем жив. Его поднял и поддерживает сейчас только один человек. Не понравился тем, что на одну сущность генерируется 6 непонятных классов, да и сам процесс генерации надоедает

    Doctrine 2 это практически hibernate для php %) по сравнению с первой версии его очистили от мусора, сделали его data mapper-ом. Что нравится — это понятный интерфейс, чистые доменные объекты (сущности) — весь конфиг можно вынести в аннотации/xml/yaml. В результате все модели выглядят так же просто, как и class news {private $title; private $text; }. Остановился на нем.
    Ответ написан
    Комментировать
  • PDO или ORM в PHP?

    Rigo
    @Rigo
    Использовал доктрину (в симфони) — удобно, джоины делать можно. Все наглядно и красиво, есть документация.
    Из минусов — потребляет много памяти.
    Ответ написан
    Комментировать
  • PDO или ORM в PHP?

    Parsing
    @Parsing
    Есть такая вещь как форум по php: www.phpclub.ru/
    Где есть поиск, и гораздо больше опытных людей (а не (больше) новичков как на хабре).
    Хотя искренне надеюсь, что и здесь смогут подсказать…
    Ответ написан
    3 комментария
  • PDO или ORM в PHP?

    @Imenem
    Мне нравится подход, используемый в Yii framework — простые запросы можно реализовать с помощью ORM, а для сложных есть более низкий уровень абстракции, основанный на PDO. Таким образом можно сочетать оба подхода в зависимости от сложности того или иного элемента проекта.
    Ответ написан
    Комментировать
  • PDO или ORM в PHP?

    MARDEN
    @MARDEN
    Тоже задавался подобным вопросом. Пробовал доктрину и пропел, но откинул их ввиду большой прожорливости и костылей при сложных запросах. Также раздражало огромное количество вспомогательных файлов (базовые классы, мапперы и т.п.) на каждую модель, сгенерированные этими библиотеками. В итоге сделал свою ORM на базе Zend_Db_Table, Zend_Select (это особенно выгодно, когда сам проект построен на ZF).
    Для простых случаев удобно использовать Active Record. Самым удачным примером реализации считаю AR в фреймворке Yii.
    Ответ написан
    1 комментарий
  • PDO или ORM в PHP?

    @Nc_Soft
    Простые запросы (их процентов 80) орм упрощают конечно, а вот если надо нестандарт, то проще нативным sql сделать. Имхо конечно.
    Ответ написан
    Комментировать
  • Зачем нужен CoffeeScript?

    Как по мне так и без него можно обойтись. Его знаю используют как обьектно0ориентированный js
    Ответ написан
    Комментировать
  • Зачем нужен CoffeeScript?

    Естественный ход эволюции. CoffeeScript транслируется в JavaScript, JavaScript транслируется в байт-код виртуальной машины (или во что там?), байт-код интерпретируется в машинные коды, а машинные коды исполняет процессор. А всё в угоду скорости написания программы.
    Ответ написан
    Комментировать
  • Зачем нужен CoffeeScript?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Я пользуюсь PhpStorm (WebStrom то же самое) - нормально связывается JavaScript и CoffeeScript код, потому новый предпочитаю писать в CoffeeScript, IDE транслирует его в JavaScript на лету, отлаживать тоже проблем не вижу, по-моему даже LiveEdit должен работать с CoffeeScript/SCSS/LESS
    Ответ написан
    Комментировать
  • Зачем нужен CoffeeScript?

    @asn007
    А что вам собственно не нравится? На выходе мы получаем тот же JS, только в профиль. Другое дело, что когда один пишет на Coffee, а все остальные на JS не есть хорошо по организационным причинам, но это уже внутренние проблемы, которые должны решаться тимлидом.
    Ответ написан
    3 комментария
  • Зачем нужен CoffeeScript?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Каждому свое, если хотите узнать мнения сообщества, то вот огромная холиварная статья: http://habrahabr.ru/post/195944/
    Ответ написан
    1 комментарий
  • Composer не видит переменную PATH?

    mcmraak
    @mcmraak
    php+sql+js+bicycle+crutches
    Я путь к php поставил ниже, после пути к файлам composer

    Аналогично, нужно всего лишь поставить пути к PHP в конце списка системной переменной PATH. В windows7 все пути просто перечисляются через точку с запятой в одной строке, по этому надо вырезать и вставить, что-бы получилось например вот так: C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\ProgramData\ComposerSetup\bin;D:\OpenServer\modules\php\PHP-5.5-x64;C:\php55
    Ответ написан
    1 комментарий
  • Composer не видит переменную PATH?

    vangelis83
    @vangelis83
    Начинающий веб разработчик
    У меня была такая проблема. Решил ее следующим образом: в windows 10 есть окно, в котором все пути выводятся в отдельных строках и там же есть кнопки "Вверх", "Вниз". Я путь к php поставил ниже, после пути к файлам composer. И случилось чудо, composer у меня заработал.
    Ответ написан
    4 комментария
  • Composer не видит переменную PATH?

    @Dimon-zmey
    Все дело в использовании Open Server в котором уже установлен composer. Зайдите в \OpenServer\modules\php\ выберите версию php которую вы используете и удалите файлы composer.bat и composer.phar. После перезагрузки сервера команда composer сразу заработает.
    Ответ написан
    5 комментариев
  • Почему Битрикс так популярен?

    north_leshiy
    @north_leshiy
    Руководитель направления разработки
    Поставьте себя на место заказчика:
    1. CMS с богатым опытом (уже более 10 лет на рынке)
    2. Имеет самую большую в России долю по eccommerce
    3. Имеет бесплатную качественную поддержку
    4. Имеет широкую документацию
    5. Во всех регионах от малых до самых топовых студий можно найти специалистов без труда.
    6. Обратная совместимость. Полная и безоговорочная. Вы всегда получите доступ к новым фичам и вам не придется доплачивать дохрена программистам чтобы перейти на новую версию движка т.к. старый уже не поддерживают и он кишмя кишит дырами.
    7. Уже готова большая часть функционала которая вам нужна, и оттестирована годами. Только шаблон по сути натяни + немного кастомизируй логику под свои БП.
    8. Есть штатная интеграция с 1с, у нас весь бизнес в России почти на ней.

    Ключевое: "бизнес не любит риски", и потому в большинстве случаев bitrix самая удобная и выгодная система для заказчика как минимум в России.

    За 6 летний опыт работы в направлении веб-студий, столько компаний повидал которые писались на каких нибудь:
    а) Самописных движках
    б) Бесплатных движках к которым прибили гвоздями функционал который в них не заложен
    в) Или вовсе на питоне/руби
    ... которых не хотели брать ни одна из топ 10-20 региональных студий (РнД) на поддержку, и они потом переписывали заново проекты... на bitrix.

    Bitrix это стандарт отрасли по ecommerce в России. Сейчас глобальный тренд на рынке - работы по поддержке и развитию проектов становится все больше чем работы по созданию новых.

    И когда вы пишите на bitrix framework, у вас будет всегда много работы, т.к. bitrix не только популярен, но становится все популярнее, следите за вектором. Сейчас он входит в топ 8 CMS в мире, за последние годы прибавил 5 позиций и продолжает увеличивать свою долю.

    А на счет качества... Мне порой приходит на ум ассоциация с PHP. PHP издавна отвоевала огромную долю рынка, но потом у нее появился некоторый период застоя. А тут сбоку питоны, руби. И все ругали PHP, говорили что у него не самая лучшая поддержка ООП (немного улучшившаяся с первыми 5х релизами), но в сети были модны статьи в духе PHP не круто, "PHP все", сейчас его долю на рынке веба по откусывают.
    Но вот нифига, за счет большого сообщества и богатой инерции просто PHP стал улучшаться, преодолели кризис PHP6 и разногласий, и вуаля, уже php7 который уже "более-менее", и php пошел в гору.

    Так и с битрикс думаю. Скорее он уже до-перепишет свое ядро на человеческий код, чем его сместят с рынка.
    Работы по новому ядру активно ведутся, и оно уже 4 год живет параллельно со старым. От релиза к релизу переписывается все большая часть модулей, компонентов, структуры базы, что немаловажно с поддержкой миграции кода и данных.

    Ну и что немаловажно это те люди которые пишут этот код. Если вы в топовой веб-студии с хорошими архитекторами и ведущими программистами - код на bitrix Framework будет написан качественно, и грамотно на новом ядре в традициях ООП, использования паттернов, грамотно собраны в модули и компоненты. Если же вы фрилансер или в мелкой студии, скорей всего ваши проекты будут "дурно" пахнуть, вся логика будет в шаблонах, или вообще в 1 шаблоне который будет напрочь состоять из сплошного роутинга.
    Ответ написан
    7 комментариев
  • Как сделать файловый сервер через роутер с доступом из «внешки»?

    Jump
    @Jump
    Системный администратор со стажем.
    • Ну для начала вам нужен белый IP адрес.
    • Далее -нужно поднять FTP или HTTP сервер на роутере. Это уже надо сторонние прошивки смотреть могут ли они это сделать.
    • Скорость скачивания с USB диска будет крайне малой и будет сильно нагружать роутер. Поэтому если у вас там более 3 пользователей на сайте планируется, то роутер лучше взять максимально дорогой с хорошим процессором, смотрите топовые модели за 20-30тыс.
    Ответ написан
    Комментировать
  • Как сделать файловый сервер через роутер с доступом из «внешки»?

    По мне так это огромный огород который будет доставлять боль, скорость передачи файла упрется в способность чипа роутера. Я таких экспериментов ради просто бы собрал мини-пк и сделал бы на нем полноценный линух сервер, а то и использовал бы решение для личного облака
    Ответ написан
    4 комментария
  • Как сделать файловый сервер через роутер с доступом из «внешки»?

    @pfg21
    ex-турист
    перепрошиваешь в openwrt и далее работаешь как в обычной серверной линухе.
    скорости зависят от ресурсов, а их в роутере крайне мало, для ftp ssh и т.д. файлохранилища, без граф.интерфейсов, хватит за глаза.
    Ответ написан
    Комментировать
  • Как создать связь многие ко многим в phpMyadmin?

    27cm
    @27cm
    TODO: Написать статус
    Связь "многие-ко-многим" в MySQL реализуется через промежуточную таблицу.

    Классический пример:
    У нас есть две сущности (таблицы): авторы и книги. У каждого автора может быть несколько написанных книг, а книга может иметь нескольких авторов. Чтобы связать таблицу авторов (authors) с таблицей книг (books) создаётся дополнительная таблица authors_books, каждая запись (строка) которой содержит идентификатор автора и идентификатор книги.

    authors:
    id_author | name
    -------------------------
       1      | Иванов И. И.
       2      | Петров П. П.
       3      | Сидоров С. С.


    books:
    id_book | title
    -------------------------
       1    | Учебник MySQL
       2    | Учебник PHP


    authors_books:
    id_author | id_book
    ------------------------
       1      |   1
       2      |   1
       2      |   2
       3      |   2


    Таким образом мы храним две книги:
    1. "Учебник MySQL", Иванов И. И., Петров П. П.
    2. "Учебник PHP", Петров П. П., Сидоров С. С.
    Ответ написан
    Комментировать