Kontynuujemy zagadnienia bazodanowe. Tym razem – budujemy nasz model. Do dzieła.
Wracamy do lekcji poprzedniej i tniemy wszystko poniżej tego kodu:
//(...)
$conn = new PDOConnection();
$conn->connect();
$conn = $conn->getConnection();
Okej, budujemy klasę abstrakcyjną Model:
abstract class Model {
protected $tablename;
protected $keys;
protected $conn;
public function setConn($conn)
{
$this->conn = $conn;
}
public function keysString(){
return "(" . implode(", ", $this->keys) . ")";
}
public function valuesString(){
$values = array_map(fn($k) => ":$k", $this->keys);
return "(" . implode(", ", $values) . ")";
}
abstract public function insert($data);
}
Jeszcze to przeorganizujemy. Na razie jednak piszemy klasę pochodną:
class PersonModel extends Model {
protected $tablename = 'people';
protected $keys = ['name', 'age'];
public function insert($data){
echo "INSERT INTO {$this->tablename} {$this->keysString()} VALUES {$this->valuesString()}";
echo "<br>";
print_r($data);
}
}
Zobaczmy, jak to działa:
$person = new PersonModel();
$person->insert(['name' => 'Jane', 'age' => 20]);
//INSERT INTO people (name, age) VALUES (:name, :age)
//Array ( [name] => Jane [age] => 20 )
Jesteśmy całkiem blisko napisania naszego modelu. Ciąg dalszy w następnej lekcji.