ModelTxt.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * MINZ - Copyright 2011 Marien Fressinaud
  4. * Sous licence AGPL3 <http://www.gnu.org/licenses/>
  5. */
  6. /**
  7. * La classe Model_txt représente le modèle interragissant avec les fichiers de type texte
  8. */
  9. class Minz_ModelTxt {
  10. /**
  11. * $file représente le fichier à ouvrir
  12. */
  13. protected $file;
  14. /**
  15. * $filename est le nom du fichier
  16. */
  17. protected $filename;
  18. /**
  19. * Ouvre un fichier dans $file
  20. * @param $nameFile nom du fichier à ouvrir
  21. * @param $mode mode d'ouverture du fichier ('a+' par défaut)
  22. * @exception FileNotExistException si le fichier n'existe pas
  23. * > ou ne peux pas être ouvert
  24. */
  25. public function __construct ($nameFile, $mode = 'a+') {
  26. $this->filename = $nameFile;
  27. if (!file_exists($this->filename)) {
  28. throw new Minz_FileNotExistException (
  29. $this->filename,
  30. Minz_Exception::WARNING
  31. );
  32. }
  33. $this->file = @fopen ($this->filename, $mode);
  34. if (!$this->file) {
  35. throw new Minz_PermissionDeniedException (
  36. $this->filename,
  37. Minz_Exception::WARNING
  38. );
  39. }
  40. }
  41. /**
  42. * Lit une ligne de $file
  43. * @return une ligne du fichier
  44. */
  45. public function readLine () {
  46. return fgets ($this->file);
  47. }
  48. /**
  49. * Écrit une ligne dans $file
  50. * @param $line la ligne à écrire
  51. */
  52. public function writeLine ($line, $newLine = true) {
  53. $char = '';
  54. if ($newLine) {
  55. $char = "\n";
  56. }
  57. fwrite ($this->file, $line . $char);
  58. }
  59. /**
  60. * Efface le fichier $file
  61. * @return true en cas de succès, false sinon
  62. */
  63. public function erase () {
  64. return ftruncate ($this->file, 0);
  65. }
  66. /**
  67. * Ferme $file
  68. */
  69. public function __destruct () {
  70. if (isset ($this->file)) {
  71. fclose ($this->file);
  72. }
  73. }
  74. }