Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Parse error: syntax error, unexpected 'private' (T_PRIVATE), expecting variable (T_VARIABLE) in

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();
?>
4 respostas

Olá, Eduardo! Tudo bem?

Cara, para você está recebendo este erro parece que você não está usando o PHP 8.3 como mencionou. Será que você não está usando o XAMPP ou algo do tipo?

Olá, Vinícius!

Era isso msm!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Tentei fazer a modificação do intepretador, mas ainda assim qnd vou abrir o servidor ele sempre pega a versão do xammp, o que eu poderia fazer?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

php -S localhost:8080 -t public
[Wed Aug 14 16:52:37 2024] PHP Warning:  Module 'openssl' already loaded in Unknown on line 0
<br />
<b>Warning</b>:  Module 'openssl' already loaded in <b>Unknown</b> on line <b>0</b><br />
[Wed Aug 14 16:52:37 2024] PHP 7.4.33 Development Server (http://localhost:8080) started

Exclui o XAMPP hahaha, cara para ser sincero, eu não uso o iniciar por aí. Quando vou rodar algum código PHP eu faço pelo terminal ;)

solução!

Infelizmente isso não é possível... Tenho outro projeto muito importante utilizando o apache do XAMPP, mas achei uma solução!

Para quem tiver o mesmo problema e tiver utilizando a IDE PHPStorm é só executar esse comando dentro da interface da IDE!

Passo a Passo: Vocês terão que clicar na parte bem ao lado do símbolo Debugger e encontrar a parte "Edit Configurations..." Insira aqui a descrição dessa imagem para ajudar na acessibilidadeapós isso, vc terá que criar um "Build-in Web Server" e clicar em "Run" para rodar o servidor. E pronto, seu servidor vai rodar com a versão que vc colocou na IDE tranquilamente! :) Insira aqui a descrição dessa imagem para ajudar na acessibilidade