Допустим, я делаю веб-приложение для сайта обмена историями в Интернете.
У нас есть таблицы: жанр, теги, content_warning только с 2 столбцами в качестве идентификатора и имени.например: жанр = 1 - романтика, 2 - действие и т. д.
Я использую приведенные выше таблицы для управления / определения каждого жанра / тегов / доводов контента.поэтому всякий раз, когда пользователь публикует / загружает свою собственную историю, он просто не может ввести случайные теги / жанр / contentwarnings.
Так что у меня будут эти функции в моей story_model :
public function get_genre(){
$genre = array();
$query = $this->db->get('genre');
foreach($query->result() as $row){
$genre[$row->genre_id] = $row->genre_name;
}
return $genre;
}
public function get_tags(){
$tags = array();
$query = $this->db->get('tag');
foreach($query->result() as $row){
$tags[$row->tag_id] = $row->tag_name;
}
return $tags;
}
public function get_content_warnings(){
$content_warning = array();
$query = $this->db->get('content_warning');
foreach($query->result() as $row){
$content_warnings[$row->content_warning_id] = $row->content_warning_name;
}
return $content_warning;
}
Правильно ли сказать, что я повторяю себя в вышеуказанных 3 функциях?поэтому я написал бы один код, например:
public function sample_get($table){
$data = array();
$query = $this->db->get($table);
foreach($query->result_array() as $row){
$data[$row[$table.'_id']] = $row[$table.'_name'];
}
return $data;
}
, чтобы получить доступ к вышеуказанной функции в моем контроллере, и я бы передал в качестве параметра 'жанр', 'тег' или 'content_warning'.
Как бы я назвал свою функцию выше?3 отдельные функции легко назвать, так как они очень прямолинейны, и вы знаете, что делает функция, прочитав ее имя.
объединение всех трех функций в одну затрудняет наименование функции в прямомпуть.Мне нравится называть свою функцию как можно более прямой, чтобы мне было легко ее выполнять.так как они более читабельны.
Account_model:
public function get_userid($username){
$this->db->select('user_id');
$this->db->from('user');
$this->db->where('username', $username);
$query = $this->db->get();
foreach($query->result() as $row){
$user_id = $row->user_id;
}
return $user_id;
}
story_model:
public function get_stories($user_id){
$stories = array();
$this->db->select('story_id, story_name');
$this->db->from('story');
$this->db->where('user_id', $user_id);//author
$query = $this->db->get();
foreach($query->result() as $row){
$stories[$row->story_id] = $row->story_name;
}
return $stories;
}
будут ли две вышеупомянутые функции гарантированно сухими идификациями?
Или давайте изменим вторую функцию, чтобы получить только story_id, который совпадал бы с функцией account_model для получения user_id.они тогда должны были бы высохнуть?
но я не совсем понимаю, когда я решу высушить свои функции?так как я буду использовать много функций get для извлечения данных, тогда я просто выберу одну функцию get?