• В чём отличия между .addEventListener() и .onclick = function() в JS?

    OKyJIucT
    @OKyJIucT
    Sunshine reggae
    addEventListener добавляет отслеживание любого события, которое укажешь, а onclick - только клики. Поэтому что использовать - зависит от задачи.

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

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В принципе можно запустить несколько nginx instances на разных портах, но ИМХО это бред. Nginx очень эффективный сервер и справится со всеми сайтами из одного instance. Что касается пользователей для сайтов, то это принято решать с помощью PHP-FPM, вот с этим проблем нет - запускаете несколько пулов, каждый под своим пользователем и с отдельным сокетом. А далее говорите Nginx для каждого виртуального хоста использовать свой сокет.
    Ответ написан
    Комментировать
  • Почему значение final можно изменять?

    @Dugayoyo
    Его нельзя изменить(нельзя изменить ссылку). А в данном примере меняют не его, а в него записывают инкрементированное значение counter.
    Ответ написан
    2 комментария
  • Почему в шаблоне проектирования MVC именно 3 компоненты?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    То что вы описываете - подход с использованием толстых контроллеров. Откройте для себя дивный мир Service-Oriented Architecture. Вообще как, модели, они же доменные модели, это просто представление данных. За сохранение данных и их обработку, валидацию и т.д. отвечают сервисы. Контроллеры так же можно представлять в виде сервисов, и из задача будет только проверка, имеет ли пользователь доступ к данной операции, что собственно нужно сделать и т.д. Таким образом контроллер может вообще не иметь понятия о том, где хранятся данные, как они обрабатываются... Он просто смотрит что пользователь может сохранять данные, передает данные пользователя сервису, тот сохраняет....

    Короче как-то так.

    Пример модели:
    class User
    {
        private $id;
        private $email;
        private $password;
        private $enabled;
    
        public function getId() {...}
        public function getEmail() {...}
        public function setEmail($email) {...}
        public function getPassword() {...}
        // за хэширование пароля отвечает сервис, модель ничего об этом знать не должна.    
        public function setPassword($password) {...} 
        public function isActive() {}
        public function activate() {}
    }


    пример контроллера
    /**
     * @Route("/users")
     * @Method("POST")
     */
    public function createUserAction(Request $request) {
        if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) {
            throw new AccessDeniedException();
        }
    
        $user = new User();
        $form = $this->createForm(new UserForm(), $user);
        $form->bindRequest($request);
        if (!$form->isValid()) {
            // save errors to session, redirect     
            return $this->redirecti(...);
        }
     
        $user = $form->getData();
        $this->get('app.user_manager')->createUser($user);
    
        return $this->redirect();
    }
    Ответ написан
    Комментировать