serialize

This commit is contained in:
Adrien MALINGREY 2025-05-11 03:03:43 +02:00
parent ee76bbfc61
commit 40be9eeee1

View File

@ -25,11 +25,11 @@ class Grille implements ArrayAccess
public $grille; public $grille;
public $hauteur; public $hauteur;
public $largeur; public $largeur;
public $dico; private $dico;
private $positions; private $positions;
private $nb_positions; private $nb_positions;
public $lignes = []; private $lignes = [];
public $colonnes = []; private $colonnes = [];
public $valide = false; public $valide = false;
public $definitions = []; public $definitions = [];
@ -38,13 +38,6 @@ class Grille implements ArrayAccess
$this->hauteur = $hauteur; $this->hauteur = $hauteur;
$this->largeur = $largeur; $this->largeur = $largeur;
$this->grille = array_fill(0, $hauteur, array_fill(0, $largeur, '')); $this->grille = array_fill(0, $hauteur, array_fill(0, $largeur, ''));
$this->positions = [];
for ($y = 0; $y < $hauteur; $y++) {
for ($x = 0; $x < $largeur; $x++)
$this->positions[] = [$x, $y];
}
$this->nb_positions = count($this->positions);
} }
public function get_ligne($y, $largeur) public function get_ligne($y, $largeur)
@ -67,7 +60,18 @@ class Grille implements ArrayAccess
{ {
mt_srand(crc32($id)); mt_srand(crc32($id));
if (!isset($this->dico)) $this->dico = mots_espaces(max($this->hauteur, $this->largeur)); if (!isset($this->dico)) {
$this->dico = mots_espaces(max($this->hauteur, $this->largeur));
}
if (!isset($this->positions)) {
$this->positions = [];
for ($y = 0; $y < $hauteur; $y++) {
for ($x = 0; $x < $largeur; $x++)
$this->positions[] = [$x, $y];
}
$this->nb_positions = count($this->positions);
}
$grilles = $this->gen_grilles(); $grilles = $this->gen_grilles();
$grilles->current(); $grilles->current();
@ -194,6 +198,18 @@ class Grille implements ArrayAccess
); );
} }
public function __serialize(): array {
return [
"grille" => $this->grille,
"definitions" => $this->definitions
];
}
public function __unserialize(array $data): void {
$this->grille = $data["grille"];
$this->definitions = $data["definitions"];
}
public function save($id) public function save($id)
{ {
if (session_status() === PHP_SESSION_ACTIVE) { if (session_status() === PHP_SESSION_ACTIVE) {
@ -203,8 +219,7 @@ class Grille implements ArrayAccess
session_id("$this->largeur,$this->hauteur,$id"); session_id("$this->largeur,$this->hauteur,$id");
session_start(["use_cookies" => false]); session_start(["use_cookies" => false]);
$_SESSION["grille"] = $this->grille; $_SESSION = serialize($this);
$_SESSION["definitions"] = $this->definitions;
} }
public function load($id) public function load($id)
@ -216,8 +231,7 @@ class Grille implements ArrayAccess
return false; return false;
} }
$this->grille = $_SESSION["grille"]; unserialize($_SESSION);
$this->definitions = $_SESSION["definitions"];
return true; return true;
} }