ФорумПрограммированиеPHP для идиотов → Пишу ли я правильно Controller ? (MVC путь)

Пишу ли я правильно Controller ? (MVC путь)

  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 27 июня 2012 г. 13:21

    Здравствуйте!

    Ниже вы видите пример моего контроллера, метод confirm_changings() получает ключ(passkey) пользователя который хочет восстановить свой пароль, и выполняем проверки с помощью моделя User. После удачной проверки, пользователю высылается новый пароль на почту.

    Вопрос:
    1) Правильно ли я делаю структуру контролера?
    т.е. я знаю, что контроллер только получает данные и проверяет их с помощью моделей. Контроллер не в коем случае не должен выполнять какие либо модификации, как я понял он манипулирует результатами из методов Model и в зависимости от них открывает те или иные данные в View.

    2) Правильно я делаю, что полученный результат от методов Моделей я проверяю в Контроллере и выдаю сообщение об ошибке или успехе(т.е. сама структура)?

    Посмотрите, пожалуйста, код и скажите правильно ли он написан с точки зрения MVC?
    <?php
    class Authorization_Controller extends Base_Controller {

    public function action_confirm_changings() {
    /* ————————
    * 1) Подтверждение запроса на восстановления пароля
    * 2) Генерация и изменение старого пароля на новый
    * 3) Отправка письма пользователю
    * ————————*/
    // Ответ после выполнения работы скрипта
    $Content = '';
    // Уникальный ключ пользователя из URL сегмента
    $Passkey = URI::segment(3, 0);
    $UserRowsValueByPasskey = User::UserRowsValueByPasskey($Passkey);
    if([email protected]$UserRowsValueByPasskey->login) {
    // Такой Passkey не был обнаружен в базе данных
    $Content .= Template::DisplayResponse(
    Template::lang('registration.empty_passkey'), 'error'
    );
    }
    else {
    // Пользователь подтвердил свой email, обновляем его пароль
    $SetNewUserPasswordAndReturnIt = User::SetNewUserPasswordAndReturnIt(
    $UserRowsValueByPasskey->login
    );

    if(!$SetNewUserPasswordAndReturnIt) {
    // Возникла ошибка во время обновления данных
    $Content .= Template::DisplayResponse(
    Template::lang('authorization.password_updating_failed'), 'error'
    );
    }
    else {
    // Пароль пользователя успешно изменен
    $Content .= Template::DisplayResponse(
    Template::lang('authorization.successful_password_updating', array(
    'login' => $UserRowsValueByPasskey->login,
    'email' => $UserRowsValueByPasskey->email,
    )), 'success'
    );

    // Отправляем пользователю письмо с его новым паролем
    $SendMail = User::sendMail($UserRowsValueByPasskey->email,
    'successful_password_updating', // Текстовой шаблон письма
    array(
    // Переменные которые будут заменены в шаблоне письма на значение ниже
    'login' => $UserRowsValueByPasskey->login,
    'password' => $SetNewUserPasswordAndReturnIt,
    'domain' => Request::server('http_host'),
    'ip' => Request::ip(),
    )
    );
    }
    }

    Section::inject('content', $Content);
    return View::make('template')
    ->with('header', Template::seo_header() );
    }

    }
    ?>


    Фреймворк: Laravel
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 27 июня 2012 г. 13:39, спустя 17 минут 55 секунд

    Какой ужасный фреймворк
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 27 июня 2012 г. 13:42, спустя 2 минуты 54 секунды

    И в чем же его ужас? Ты с ним работал?
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 27 июня 2012 г. 13:59, спустя 17 минут 1 секунду

    Например слишком много статических методов.
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 27 июня 2012 г. 14:04, спустя 5 минут 29 секунд

    Не вижу в этом ужаса, всего лишь дело вкуса.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 27 июня 2012 г. 15:16, спустя 1 час 11 минут 12 секунд

    Говорят этот фреймворк самый передовой и крутой в php, даже по телеку рекламируют!
    Но я вижу приведенный код и меня в пот бросает, видимо технологии ушли далеко вперед и мне их не догнать
    adw/0
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 27 июня 2012 г. 15:17, спустя 1 минуту 41 секунду

    по телеку?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 27 июня 2012 г. 15:24, спустя 3 минуты 17 секунд

    мда…
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 27 июня 2012 г. 15:33, спустя 9 минут 24 секунды

    В данном фреймворке меня все устраивает, даже без отсутствия уверенных знании в английском языке (доки на английском) код в примерах понятный и компенсировал некие непонятные моменты из объяснении автора, хотя и редкие случаи.

    Но я вижу приведенный код и меня в пот бросает, видимо технологии ушли далеко вперед и мне их не догнать

    Я не пойму, это сарказм или нет? :D

    Если да, то поставьте на путь истинный. Мне важен ответ на вопросы:
    Правильно ли спроектирована часть контроллера в моем примере?
    Есть ли в нем некие моменты которые должны были быть в Модели а не в Контролере?

  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 27 июня 2012 г. 15:36, спустя 2 минуты 53 секунды

    работает и ладно
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 27 июня 2012 г. 15:52, спустя 15 минут 46 секунд

    Согласен, но нужна точность и строгая придерживания структуры паттерна MVC. Единственное, что меня раздражает в php это свобода в проектирование приложений т.е. не важно сколько пробелов или табов там поставил или не поставил. Написал все в одну строку все равно будет работать.

    Хочу придерживается строгого и стандартного стиля и логики программирования, фреймворк это мне предоставляет, но правильно ли я его использую - в этом и заключается вопросы топика.
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 27 июня 2012 г. 16:02, спустя 9 минут 49 секунд

    пиши на питоне
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 27 июня 2012 г. 21:12, спустя 5 часов 10 минут 11 секунд

    Надо глянуть что за птица этот ларавель.
    Спустя 181 сек.

    Например слишком много статических методов.

    А ты сможешь внятно объяснить почему это плохо? Или только "слышал звон" )))
    ιιlllιlllι унц-унц
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 27 июня 2012 г. 23:24, спустя 2 часа 12 минут 37 секунд


    пиши на питоне

    Его сейчас изучаю, но знания пока не позволяют переписать на нем проекты.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!