pieces[] = $piece; } // Supprimer une pièce du tableau par index public function remove(int $index): void { if (isset($this->pieces[$index])) { unset($this->pieces[$index]); $this->pieces = array_values($this->pieces); // Réindexer le tableau } } // Méthode de conversion en chaîne de caractères public function __toString(): string { $output = ""; foreach ($this->pieces as $piece) { $output .= $piece->__toString() . "\n"; } return $output; } // Convertir en JSON public function toJson(): string { return json_encode(array_map(fn($piece) => json_decode($piece->toJson(), true), $this->pieces)); } // Créer une instance depuis un JSON public static function fromJson(string $json): ArrayPieceSquadro { $data = json_decode($json, true); $arrayPieceSquadro = new self(); foreach ($data as $pieceData) { $arrayPieceSquadro->add(PieceSquadro::fromJson(json_encode($pieceData))); } return $arrayPieceSquadro; } // Implémentation de ArrayAccess public function offsetExists($offset): bool { return isset($this->pieces[$offset]); } public function offsetGet($offset): ?PieceSquadro { return $this->pieces[$offset] ?? null; } public function offsetSet($offset, $value): void { if ($value instanceof PieceSquadro) { if (is_null($offset)) { $this->pieces[] = $value; } else { $this->pieces[$offset] = $value; } } else { throw new InvalidArgumentException("Value doit être une instance de PieceSquadro"); } } public function offsetUnset($offset): void { if (isset($this->pieces[$offset])) { unset($this->pieces[$offset]); } } // Implémentation de Countable public function count(): int { return count($this->pieces); } } ?>