Olá, tudo bem? Está surgindo esse erro para mim (Parse error: syntax error, unexpected 'private' (T_PRIVATE), expecting variable (T_VARIABLE) in) e não sei como eu poderia arrumar! Alguém poderia me ajudar?
Nota: Estou utilzando a versão 8.3 do php
Código VideoRepository.php
<?php
namespace Alura\Mvc\Repository;
use Alura\Mvc\Entity\Video;
use PDO;
class VideoRepository {
/**
* @param PDO $pdo
*/
public function __construct(private PDO $pdo) {
}
/**
* @param Video $video
* @return bool
*/
public function add(Video $video) : bool {
$sql = 'INSERT INTO videos (url, title) VALUES (?, ?)';
$statement = $this->pdo->prepare($sql);
$statement->bindValue(1, $video->url);
$statement->bindValue(2, $video->title);
$result = $statement->execute();
$id = $this->pdo->lastInsertId();
$video->setId(intval($id));
return $result;
}
/**
* @param int $id
* @return bool
*/
public function remove(int $id): bool {
$sql = 'DELETE FROM videos WHERE id = ?';
$statement = $this->pdo->prepare($sql);
$statement->bindValue(1, $id);
return $statement->execute();
}
/**
* @param Video $video
* @return bool
*/
public function update(Video $video): bool {
$sql = 'UPDATE videos SET url = :url, title = :title WHERE id = :id;';
$statement = $this->pdo->prepare($sql);
$statement->bindValue(':url', $video->url);
$statement->bindValue(':title', $video->title);
$statement->bindValue(':id', $video->id, PDO::PARAM_INT);
return $statement->execute();
}
/**
* @return Video[]
*/
public function all(): array {
$videoList = $this->pdo
->query('SELECT * FROM videos;')
->fetchAll(PDO::FETCH_ASSOC);
return array_map(
function (array $videoData) {
$video = new Video($videoData['url'], $videoData['title']);
$video->setId($videoData['id']);
return $video;
}, $videoList);
}
}
Começo do código listagem-videos.php
<?php
$dbPath = __DIR__ . '/banco.sqlite';
$pdo = new PDO("sqlite:$dbPath");
$repository = new \Alura\Mvc\Repository\VideoRepository($pdo);
$videoList = $repository->all();
?>