Hej, prosta funkcja dodająca film do bazy.
Cały kod: https://gitlab.com/raptoor2/php-movies---rest-api
public function addMovie(){
$post = (array)json_decode($this->f3->get('BODY')); // pobieramy całe ciało odpowiedzi curl
$data = Array('name', 'year', 'category'); // lista pól, które muszą znaleźć się w ciele
for($i=0;$i<count($data);$i++){
if(!array_key_exists($data[$i], $post)){
echo "ERR_NO_MOVIE_DATA_IN_POST";
return false;
}
else if(ctype_space($post[$data[$i]])){
echo "ERR_EMPTY_".mb_strtoupper($data[$i])."_MOVIE_DATA";
return false;
}
}
foreach($post as $key => $value){
$$key = $value; // przypisanie pól z tablicy post do zmiennych na podstawie nazw kluczy
}
if(!is_int($category)){
echo "ERR_CATEGORY_ISNT_NUMBER";
return false;
}
else if(!is_int($year)){
echo "ERR_YEAR_ISNT_NUMBER";
return false;
}
$result = $this->db->exec("insert into movies (name, year, category) values(?, ?, ?)", Array( 1=> $name, 2 =>$year, 3 => $category)); //bind i wykonanie zapytania do bazy
if($result){
echo "SUCC_MOVIE_ADDED";
}
}
sposób nr 2:
public function addMovie(){
$post = (array)json_decode($this->f3->get('BODY')); // pobieramy całe ciało odpowiedzi curl
$data = Array('name', 'year', 'category'); // lista pól, które muszą znaleźć się w ciele
$err = NULL;
for($i=0;$i<count($data);$i++){
if(!array_key_exists($data[$i], $post)){
$err = $err ?? "ERR_NO_MOVIE_DATA_IN_POST";
}
else if(ctype_space($post[$data[$i]])){
$err = $err ?? "ERR_EMPTY_".mb_strtoupper($data[$i])."_MOVIE_DATA";
}
}
if(!is_int($post['category'])){
$err = $err ?? "ERR_CATEGORY_ISNT_NUMBER";
}
else if(!is_int($post['year'])){
$err = $err ?? "ERR_YEAR_ISNT_NUMBER";
}
if(empty($err))
$result = $this->db->exec("insert into movies (name, year, category) values(?, ?, ?)", Array( 1=> $post['name'], 2 =>$post['year'], 3 => $post['category'])); //bind i wykonanie zapytania do bazy
if($result) echo "SUCC_MOVIE_ADDED";
else{
echo $err;
}
}
Czy ten sposób obrabiania i sprawdzania danych jest poprawny?
Wypisywanie w ten sposób błędów jest zrobione dobrze czy powinienem robić to inaczej?
Który z przedstawionych sposobów jest lepszy? A może oba są błędne i powinienem inaczej podchodzić do problemu?