J'ai depuis la mise à jour vers PHP 8.2 un message d'erreur sur un blog "Deprecated: Creation of dynamic property ORM\Blog\Entity\Blog::$0 is deprecated in E:\laragon\www\jd-web-design-version2\site\OCFram\Hydrator.php on line 9"
Je sais que cela vient de la mise à jour PHP 8 qui souhaite supprimer les propriétés dynamiques. Je sais également que l'on peut désactiver le message d'erreur en ajoutant "#[\AllowDynamicProperties]" à la classe en question mais je souhaiterais écrire mon code proprement. Je ne sais pas comment m'y prendre, une idée ?
Merci d'avance.
Ma classe "Blog" :
<?php
namespace ORM\Blog\Entity;
use OCFram\Hydrator;
//#[\AllowDynamicProperties]
class Blog {
use Hydrator;
private $id;
private $titre;
private $image;
private $contenu;
private $date;
private $extrait;
private $slug;
public function __construct(Array $datas){
$this->hydrate($datas);
}
//TOUS LES GETTERS
public function getId(){
return $this->id;
}
public function getTitre(){
return $this->titre;
}
public function getImage(){
return $this->image;
}
public function getContenu(){
return $this->contenu;
}
public function getDate(){
return $this->date;
}
public function getExtrait(){
return $this->extrait;
}
public function getSlug(){
return $this->slug;
}
//TOUS LES SETTERS SAUF SUR CELUI POUR id_photo
public function setTitre($val){
$this->titre = $val;
}
public function setImage($val){
$this->image = $val;
}
public function setContenu($val){
$this->contenu = $val;
}
public function setDate($val){
$this->date = $val;
}
public function setExtrait($val){
$this->extrait = $val;
}
public function setSlug($val){
$this->slug = $val;
}
}
?>
Ma classe Hydrator :
<?php
namespace OCFram;
trait Hydrator {
function hydrate(Array $array){
foreach ($array as $key => $value) {
$this->$key = $value;
}
}
}
?>