Wall posté le Samedi 29 septembre 2007


Code pour illustrer l'intérêt de la programmation objet. Ce code n'a pas été testé, et comporte des bogues évidents. C'est une ILLUSTRATION.


  1. <?php
  2.  
  3. /*
  4. * Ceci est un exemple, en aucun cas ces classes ne sont robustes ou
  5. * fonctionnelles !
  6. *
  7. */  
  8.  
  9. /* Fichier générique
  10. *
  11. */  
  12.  
  13. class TextFile /* extends File */  
  14. { 
  15.    const DEFAULT_MODE = 'r' ; 
  16.    const DEFAULT_BLOCK_SIZE = 1024 ; 
  17.  
  18.    public function __construct($name) 
  19.    { 
  20.       $this->name = $name ; 
  21.    } 
  22.  
  23.    public function name() 
  24.    { 
  25.       return (string) $this->name ; 
  26.    } 
  27.  
  28.    public function open() 
  29.    { 
  30.       $this->handler = fopen($this->name, self::DEFAULT_MODE) ; 
  31.    } 
  32.  
  33.    public function close() 
  34.    { 
  35.       fclose($this->handler) ; 
  36.       $this->handler = null ; 
  37.    } 
  38.  
  39.    /* XXX La fonction bug si une ligne fait plus de 1024 octets
  40.     *
  41.     */ 
  42.    public function readline() 
  43.    { 
  44.       if($this->handler) 
  45.          return fread($this->handler, self::DEFAULT_BLOCK_SIZE) ; 
  46.       else 
  47.          throw new Exception('Manipulateur de fichier invalide !') ; 
  48.  
  49.       return null ; 
  50.    } 
  51.  
  52.    private $name ; 
  53.    private $handler ;  
  54. }  
  55.  
  56. class ConfigFile extends File  
  57. { 
  58.    const FORMAT = '^[\s|\t]*(\w+)[\s|\t]+(\w+)*#.*$' ; 
  59.    const DEFAULT_NAME = '.htconfig' ; 
  60.  
  61.    public function __construct($name) 
  62.    { 
  63.       parent::__construct(is_null($name) ? self::DEFAULT_NAME : $name) ; 
  64.    } 
  65.  
  66.    public function read() 
  67.    { 
  68.       $line = parent::read() ; 
  69.       preg_match(self::FORMAT, $line, $option) ; 
  70.  
  71.       return $option ; 
  72.    }  
  73. }  
  74.  
  75. class BufferedFile extends File  
  76. { 
  77.    /* Ici on implémenterait la lecture et l'écriture bufferisé */  
  78. }  
  79.  
  80. ?> 

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog