Какова лучшая практика для создания функций метода в PHP MVC? - PullRequest
3 голосов
/ 10 марта 2011

Мне интересно, что считается наилучшей практикой при передаче информации от контроллера к модели.В частности, я создаю модель регистрации пользователя в классе пользователя, которая запрашивает определенную информацию, такую ​​как электронная почта, имя и пароль.

Мне интересно, лучше ли поместить параметры в функцию модели и передатьтаким образом или, если лучше, просто вызвать функцию и использовать переменные $ _POST для запроса.

Вот два примера, на которые я ссылаюсь.

Метод 1

function register(){

    $first_name = $this->input->post('first_name');
    $last_name = $this->input->post('last_name');
    $email = $this->input->post('email');
    $password = $this->input->post('password_1');

    $this->user_model->register_user($email, $password, $first_name, $last_name));}

function register_user($email, $password, $first_name, $last_name){
    $sql = "INSERT INTO users (user_id, email, passwd, first_name, last_name, registration_date, confirmed, confirmation_code, banned)VALUES (NULL, ?, ?, ?, ?, '".date('Y-m-d')."', 'no', '1fg455675', 'no')";
    $register = $this->db->query($sql, array($email, $password, $first_name, $last_name));
    return $register;
}

Метод 2

function register(){
    $this->user_model->register_user());    
}

function register_user(){

    $first_name = $this->input->post('first_name');
    $last_name = $this->input->post('last_name');
    $email = $this->input->post('email');
    $password = $this->input->post('password_1');


    $sql = "INSERT INTO users (user_id, email, passwd, first_name, last_name, registration_date, confirmed, confirmation_code, banned)VALUES (NULL, ?, ?, ?, ?, '".date('Y-m-d')."', 'no', '1fg455675', 'no')";
    $register = $this->db->query($sql, array($email, $password, $first_name, $last_name));
    return $register;
}

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

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Я бы не стал использовать $_POST (или его эквивалент с вашей структурой) на уровне модели: этот не должен знать, откуда поступают данные.

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

Контроллер - это тот, который вызывается, получаяпараметры HTTP-запроса (в случае HTTP-запроса, конечно) ;Затем он извлечет данные и передаст их слою, который будет работать с этими данными: Модель.

2 голосов
/ 10 марта 2011

Вы не должны обращаться к переменным POST из вашей модели.Это сделает вашу модель менее пригодной для повторного использования, так как теперь они используют данные POST для работы.Например, в какой-то другой момент, если вам нужен метод, чтобы сделать то же самое, но вы получаете данные из другого источника (CSV), вы не сможете использовать ту же модель, потому что вы связали ее сPOST.

Попробуйте отделить их, когда вы работаете с такой структурой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...