Olá, estou com o seguinte na execução do código de lista-alunos.php.
PHP Fatal error: Uncaught Exception: Failed to parse time string (UTC-10-15) at position 6 (-): Double timezone specification in C:\Users\User\Documents\estudo\PHP e PDO\lista-alunos.php:19 Stack trace:
#0 C:\Users\User\Documents\estudo\PHP e PDO\lista-alunos.php(19): DateTimeImmutable->__construct('UTC-10-15')#1 {main} thrown in C:\Users\User\Documents\estudo\PHP e PDO\lista-alunos.php on line 19
Segue abaixo o código dos meus arquivos:
projeto-inicial.php
<?php
use Alura\Pdo\Domain\Model\Student;
require_once 'vendor/autoload.php';
$student = new Student(
null,
'Vinicius Dias',
new \DateTimeImmutable('1997-10-15')
);
echo $student->age();
lista-alunos.php
<?php
use Alura\Pdo\Domain\Model\Student;
require_once 'vendor/autoload.php';
$databasePath = __DIR__ . '/banco.sqlite';
$pdo = new PDO('sqlite:' . $databasePath);
$statement = $pdo->query('SELECT * FROM students;');
$studentDataList = $statement->fetchAll(fetch_style: PDO::FETCH_ASSOC);
$studentList = [];
foreach ($studentDataList as $studentData){
$studentList[] = new Student(
$studentData['id'],
$studentData['name'],
new \DateTimeImmutable($studentData['birth_date'])
);
}
var_dump($studentList);
inserir-alunos.php
<?php
use Alura\Pdo\Domain\Model\Student;
require_once 'vendor/autoload.php';
$databasePath = __DIR__ .'/banco.sqlite';
$pdo = new PDO('sqlite:' . $databasePath);
$student = new \Alura\Pdo\Domain\Model\Student(
null,
'Patrícia Freitas',
new \DateTimeImmutable('1987-10-25'));
$sqlInsert = "INSERT INTO students (name, birth_date) VALUES (:name, :birth_date);";
$statement = $pdo->prepare($sqlInsert);
$statement->bindValue(':name', $student->name());
$statement->bindValue(':birth_date', $student->birthDate()->format('Y-m-d'));
if($statement->execute()){
echo "Aluno incluído";
}
student.php
<?php
namespace Alura\Pdo\Domain\Model;
class Student
{
private ?int $id;
private string $name;
private \DateTimeInterface $birthDate;
public function __construct(?int $id, string $name, \DateTimeInterface $birthDate)
{
$this->id = $id;
$this->name = $name;
$this->birthDate = $birthDate;
}
public function id(): ?int
{
return $this->id;
}
public function name(): string
{
return $this->name;
}
public function birthDate(): \DateTimeInterface
{
return $this->birthDate;
}
public function age(): int
{
return $this->birthDate
->diff(new \DateTimeImmutable())
->y;
}
}
Pesquisei aqui no fórum e em outros fóruns, mas nenhuma das respostas ajudei na resolução do erro. Gostaria de saber se alguém poderia me ajudar com esse problema.
Obrigado desde já.