• На каком фрилансе легче выйти в топ?

    vaux
    @vaux
    Курящий лыжник
    Если вы не топовый специалист, то нигде.
    Ответ написан
    7 комментариев
  • Правильно ли я понимаю MVC?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нет, вы не правильно поняли MVC.

    Попробуйте подойти к проблеме чуть с другой стороны. Реализуйте ваше приложение так, что бы оно ничегошеньки не знало о HTTP, внутри него небыло ни единого echo, оно ничего не знало о сессиях и вообще ничего не знал о таких вещах. Проще всего этого добиться - ваше приложение можно запускать через CLI. Грубо говоря как-то так:

    <?php
    // run.php - просто скрипт для разового теста
    
    require __DIR__ . '/vendor/autoload.php'; // вы же уже используете composer?
    
    $app = new App();
    $app->getService('login_handler')->login('user@example.com', 'password');


    Что-то типа такого. То есть на каждый "юз кейс", то есть то что приложение должно делать, у вас должен быть метод. Типа "сделай то-то" и "сделай еще что-то".

    Вот это - наше приложение, наша "модель". Не один какой-то класс... это все приложение. MVC же ставит перед собой задачу снижения связанности между UI и приложением. Цель при этом приследуется простая - UI обычно меняется намного чаще чем логика приложения, а стало быть лучше их друг от дружки отделить целиком и полностью.

    Делается это за счет того что между UI и приложением вводят дополнительный промежуточный слой адаптеров - контроллеры (это опять же не обязательно один объект, это может быть целая цепочка адаптеров, каждый из которых делает что-то конкретное, в плодь до последнего адаптера который уже конвертирует http запрос в нужный вызов нужного метода).

    То есть что бы сказать "я сделал MVC" у вас приложение не должно зависить от UI. Если вы хоть где-то в приложении используете суперглобальные массивы, и т.д. вы проиграли. Ну либо просто не называйте это MVC, скажите что вы просто шаблоны отдельно ложите ну и роутер еще есть. Но это не MVC, это smartui, то есть наше приложение вкурсе что у него есть UI и они сильно связаны.

    MVC нужно далеко не всем, и smartui сойдет для простых проектов. Но вы должны понимать разницу, и знать когда стоит загоняться а когда можно логику в контроллеры выносить.

    Надо ли было создавать глобальные переменные в модели

    Это вы еще не уяснили значит что такое ООП, почему глобальное состояние плохо и что такое побочные эффекты (погуглите в контексте состояния).

    делать сеттеры и геттеры?

    А этим мы нарушаем инкапсуляцию. Внешний мир должен знать только что можно делать с моделью, но никак не ее структуру. То есть вместо setSomething у вас должно быть осмысленное название, типа updateSomething, changeSomething и т.д. Типа "user should be able to change password" и у вас появляется метод "changePassword". Или "User should be able to update profile details" и у вас появляется один единственный метод "updateProfileDetails()". А что оно как состояние меняет - это консерн исключительно объекта. Ему рашеть менять чего или нет. Мы таким образом изолируем побочные эффекты и уменьшаем вероятность багов. Ну и нам не нужно валидировать при таком раскладе ничего так как нет промежуточного невалидного состояния.
    Ответ написан
    9 комментариев
  • Как правильно и безопасно создавать авторизацию на PHP?

    27cm
    @27cm
    TODO: Написать статус
    1. Пароль не должен храниться в куках.
    2. Пароль не должен вообще где-либо храниться в открытом виде.

    Как правильно и безопасно создавать авторизацию на PHP?

    Использовать фреймоворк, или отдельные компоненты для авторизации, или проверенные временем библиотеки.
    Ответ написан
    3 комментария
  • Какая разница веб-дизайна и веб-программирования?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Как по мне, то картинка такая:
    • Дизайнер - рисовака;
    • Верстальшик - конвертер макета в HTML код;
    • Веб-дизайнер - дизайнер + верстальщик;
    • Front-end разработчик - верстальщик + много еще чего.

    А термин веб-программирование может означать:
    • Front-end
    • Back-end
    • Full-stack

    Так что как по мне, хренова-то курсы расписаны.
    Ответ написан
    4 комментария
  • Какой micro framework посоветуете?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Берите Symfony 3 в режиме микроядра. Профит:

    по умолчани - микрофреймворк, если этого будет не хватать - можно быстро перейти на symfony full stack решение. Ну и по качеству кода и тд. у компонентов симфони конкурентов нет (разве что zend может тягаться).

    вот только без ORM.


    Composer же, можно любой взять пакет реализующий ORM. А еще хороший вопрос - нужен ли вам ORM. Это не что-то что дефакто должно присуствовать. Скажем если у вас в качестве базы данных монга - то ORM уже не нужна, так как нет связей между документами (точнее их не должно быть).

    не навязывал свою структуру/архитектуру

    Этому пункту соответствует. Есть общепринятый best-practice но он в принципе только о общих вещах. А структуру вашего кода - это уже сами решайте. Так же нет никаких ограничений по архитектуре вашего приложения, симфони предоставляет вам только адаптеры для UI (HTTP, CLI и т.д.), то есть организация UI приложения. Приложение же само хоть на plain php может быть, просто пользовать инфраструктурой предоставляемой симфони.

    цеплять любые файлы независимо от их "географического" положения.


    Это вы сейчас об автозагрузке или что? Какие файлы? Хватит мыслить файлами, мыслите объектами, нэймспейсами и т.д. А мэппинг этого на файлы один раз прописывается в composer.json.

    p.s. Опять же, фреймворк это всего-лишь набор инструментов. он ничем вас не обязывает. Симфони один из немногих фреймворков который предоставляет свободу. То есть есть по дефолту структура, но вы ее поменять можете как захотите.
    Ответ написан
    1 комментарий
  • Почему код вешает сайт?

    @AndryG
    Вот эта строка кривая. Совсем.
    $webredirect = 'trailingslashit(bp_displayed_user_domain().bp_get_profile_slug().'/edit/group/1')';


    Очень дурная привычка не использовать фигурные скобки.
    if (isset($_COOKIE["visitCounter"]))
    $visitCounter = $_COOKIE["visitCounter"];
    $visitCounter++;
    Код выше на самом деле работает вот так:
    if (isset($_COOKIE["visitCounter"])){
      $visitCounter = $_COOKIE["visitCounter"];
    }
    
    $visitCounter++;
    Ответ написан
    1 комментарий
  • Почему именно таким образом устанавливаются фреймворки?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Открою тайну, что многие современные проекты держат в корне веб-сервера только точку входа в приложение (index.php) и ресурсы типа файлов JavaScript, CSS и картинок.
    но ведь должно все работать отсюда, с моей точки зрения test.ru

    Нет, вам кажется. Хотя, если вы настроите так, чтобы конфиг вашего веб-сервера указывал в веб-директорию проекта (туда, где точка входа лежит) - тогда всё так и будет. Но если же у вас стандартный конфиг какого-нибудь Denwer или Openserver - не ждите, что случится чудо.
    На сайте требуют для запуска
    $ cd [my-app-name]; php -S 0.0.0.0:8080 -t public public/index.php
    но зачем? когда у меня запущен LAMP? как с этим быть

    На сайте проекта предлагают отлаживать проекты на фреймворке с помощью встроенного в PHP сервера. Это вполне логичное решение. Например, я пишу на Symfony и разработку веду именно с помощью него (хотя мог бы настроить полный стек с Nginx+PHP-FPM).
    Вам просто фреймворк предоставляет возможность упростить разработку, а пользоваться ей или нет - решайте сами.
    Ответ написан
    Комментировать
  • Влияет ли объем кода PHP на производительность?

    Zhbert
    @Zhbert
    Technical Writer, Linux user
    Можно такого кода понаписать, что и одна строка повесит все к чертовой матери...
    Ответ написан
    1 комментарий
  • Backend какой выбрать?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Чего умеете на том и делайте.
    Ответ написан
    Комментировать
  • Как в PHP отправить POST запрос?

    Pinsky
    @Pinsky
    Кофеиноникотиновая смесь в backend-код
    Еще как вариант cUrl.
    Ответ написан
    Комментировать
  • Как выбрать между PHP и node.js?

    @Silm
    За крупный проект не берутся не зная инструмента.
    Если бы вы в достаточной мере знали инструмент, то вопрос у вас бы не возник.
    Если оба инструмента хорошо подходят для решения задачи, выбирают тот, с котором больше знакомы.


    хочется использовать самое новое и амбициозное (node.js)

    Так себе довод.
    Ответ написан
    Комментировать
  • Что нужно освоить веб разработчику чтобы облегчить себе жизнь?

    tot0ro
    @tot0ro
    Front - end developer
    1. IDE
    2. xdebug
    3. git
    4. composer
    5.bower
    6.npm/bower
    6. less/stulys/sass
    7. grunt/gulp/webpack
    8. apache/nginx
    9. apc/opcache/memcache/varnish etc
    10. bootstrap
    11. VIM!!!!!!!!!
    12. English!!!!!!!!!!
    13. Все дырки через границу
    14. Умение не читать ИТ литературу русских программистов за исключением Макарова, Индутного
    15. Ненавидеть Попова
    Ответ написан
    40 комментариев
  • Конвертация сайта в psd?

    zooks
    @zooks
    Frontend
    PrintScreen.
    Ответ написан
    Комментировать
  • Могу ли я продать то что написано на каком либо фреймворке?

    Откройте лицензию интересующего вас фреймворка - там написано всё, что можно делать, а что нельзя.
    Ответ написан
    Комментировать
  • Как вы относитесь к подобным сайтам?

    Alucarte
    @Alucarte
    Конечно не приятно, но что поделать. Игнорирую такие сайты и ищу информацию у их конкурентов.
    На мой взгляд в большинстве случаев таким занимаются сайты, созданные в первую очередь для продажи рекламы, а не для "удовлетворения" пользователей.
    Ответ написан
    Комментировать
  • Можно ли защититься от Ddos при помощи PHP?

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

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    cron + rsync ?
    Ответ написан
    Комментировать