type = $type; } public function makeLatex() { $data = $this->data; // on obtient la variable $latex avec ob_get_clean() // le include() ici, c'est du génie ou c'est moche ou les deux? // un nouveau fichier php est inséré à chaque itération include('latex_templates/' . $this->type . '.php'); // on retourne le buffer // normallement le code PHP inséré avec include est nettoyé en quittant la fonction $this->latex = $latex; //return($latex); } // getters public function getFileName(): string { return $this->file_name; } public function getLatexPath(): string { return $this->latex_path; } public function getPdfPath(): string { return $this->pdf_path; } public function getLatex(): string { return $this->latex; } // setters public function setFileName(string $file_name) { $this->file_name = $file_name; } public function setLatexPath(string $latex_path) { $this->latex_path = $latex_path; } public function setPdfPath(string $pdf_path) { $this->pdf_path = $pdf_path; } public function setData(Object $Object) { $this->data = array_merge($this->data, $Object->getAll()); // nécessite des tableaux associatifs //return $Object; // pour chainer les méthodes } } abstract class PrestaLatex extends Latex { protected $Date; // sera un type "Dates" protected $year = ''; //~ public function __construct(string $type) // surcharge Latex::__construct() //~ { //~ $this->type = $type; //~ $this->Date = new Dates(); //~ $this->year = $this->Date->getYear(); //~ } public function getYear(): string // parce que Dates::getDate() retourne une chaine { return $this->year; } public function makeDateInstance(int $date) { $this->Date = new Dates($date); $this->year = $this->Date->getYear(); } // forme = code-presta.tex //~ protected function nameTheFile(string $quoi, string $codePresta) //~ { //~ $this->fileName = $quoi . '-' . $codePresta . '.tex'; //~ } public function makeLatex() { $data = $this->data; $date = preg_replace('#\D#', '/', $this->Date->getDate()); // date avec des slashs / parce que j'aime bien // on obtient la variable $latex avec ob_get_clean() // le include() ici, c'est du génie ou c'est moche ou les deux? // un nouveau fichier php est inséré à chaque itération include('latex_templates/' . $this->type . '.php'); // on retourne le buffer // normallement le code PHP inséré avec include est nettoyé en quittant la fonction $this->latex = $latex; //return($latex); } } class DevisLatex extends PrestaLatex // extends Latex {} class FactureLatex extends PrestaLatex // extends Latex {} class LocationLatex extends PrestaLatex // extends Latex {} class EnveloppeRectoLatex extends Latex { // code postal avec 2 espaces entre chaque chiffre: 2 \ 9 \ 0 \ 0 \ 0 public function spacesInPostCode() { $this->data['code_postal_espaces'] = implode(' \ ', str_split($this->data['code_postal'])); } } class EnveloppeVersoLatex extends Latex {} abstract class ComptaLatex extends Latex { //~ public function __construct(string $quoi, string $annee, int $numeroMois = 0) //~ { //~ nameTheFile($quoi, $annee, $numeroMois); //~ } // forme = Recettes-2022-06-Juin.tex ou Recettes-2022.tex // type de 'annee'? //~ protected function nameTheFile(string $quoi, string $annee, int $numeroMois = 0) //~ { //~ $this->fileName = $quoi . '-' . $annee; //~ $mois = ['', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre']; //~ if($numeroMois > 0 && $numeroMois <= 12) //~ { //~ $this->fileName .= '-' . $numeroMois . '-' . $mois[$numeroMois]; //~ } //~ $this->fileName .= '.tex'; //~ } } class LivreRecettesLatex extends ComptaLatex {} class RegistreAchatsLatex extends ComptaLatex {} class BilanLatex extends ComptaLatex {}