Esse é o código que foi passado no curso
interface StudentRepository
{
public function allStudents(): array;
public function studentsBirthAt(\DateTimeInterface $birthDate): array;
public function save(Student $student): bool;
public function remove(Student $student): bool;
}
Class de PdoStudentRepository implements StudentRepository
public function save(Student $student): bool
{
if ($student->id() === null) {
return $this->insert($student);
}
return $this->update($student);
}
private function insert(Student $student): bool
{
$insertQuery = 'INSERT INTO students (name, birth_date) VALUES (:name, :birth_date);';
$stmt = $this->connection->prepare($insertQuery);
$success = $stmt->execute([
':name' => $student->name(),
':birth_date' => $student->birthDate()->format('Y-m-d'),
]);
if ($success) {
$student->defineId($this->connection->lastInsertId());
}
return $success;
}
private function update(Student $student): bool
{
$updateQuery = 'UPDATE students SET name = :name, birth_date = :birth_date WHERE id = :id;';
$stmt = $this->connection->prepare($updateQuery);
$stmt->bindValue(':name', $student->name());
$stmt->bindValue(':birth_date', $student->birthDate()->format('Y-m-d'));
$stmt->bindValue(':id', $student->id(), PDO::PARAM_INT);
return $stmt->execute();
}
Você irá criar um novo objeto do tipo Student, inicializá-lo passando o Id no construtor do objeto, criar uma nova instancia de PdoStudentRepository, e passar a instancia de Student para o método PdoStudentRepository->save(Student $student);
Dentro desse método é verificado a existência do atributo Id, se existir será feito o update desse aluno no banco de dados.
É isso que você gostaria de entender , Jailson?