1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
class Repertoire
{
private $Pere_; // Type Rep
private $Enfants_; // Type RepListe
private $Nom_; // type String
public function __construct( )
{
$args = func_get_args();
switch( count($args) )
{
// Surcharge N°1 : __construct( (String) $Chemin d'accès )
case 1:
$args[0] = $this->Normalise ( $args[0] );
if( is_array($args[0]) )
{
$this->Nom_ = $args[0][0];
unset($args[0][0]);
$this->Pere_ = NULL;
$this->Enfants_ = new RepListe( $this );
}
else
{
$this->Nom_ = $args[0];
$this->Pere_ = NULL;
$this->Enfants_ = new RepListe( $this );
}
break;
// Surcharge N°2 : __construct( (String) $Chemin d'accès , (Repertoire) $Pere )
case 2:
$args[0] = $this->Normalise ( $args[0] );
if( is_array($args[0]) )
{
$this->Nom_ = $args[0][0];
unset($args[0][0]);
$this->Pere_ = $args[1];
$this->Enfants_ = new RepListe( $this );
}
else
{
$this->Nom_ = $args[0];
$this->Pere_ = $args[1];
$this->Enfants_ = new RepListe( $this );
}
break;
}
}
// Verifie le chemin en entré
// Si $chemin = yo, retourne yo
// Si $chemin = yo/, retourne yo
// Si $chemin = /yo/yo1/, retourne Array(2){"yo,"yo1"}
private function Normalise ( $chemin )
{
$chemin = str_replace("\\","/",$chemin);
$chemin = substr($chemin,strlen($chemin)-1) == "/" ? substr($chemin,0,strlen($chemin)-1) : $chemin;
$chemin = substr($chemin,0,1) == "/" ? substr($chemin,1) : $chemin;
$chemin = strpos($chemin,"/") !== false ? explode("/",$chemin) : $chemin;
return $chemin;
}
public function __get( $prop )
{
switch( $prop )
{
// Nom du repertoire
case "Nom":
return $this->Nom_;
break;
// Repertoires Enfants
case "Enfant":
return $this->Enfants_;
break;
// Chemin d'accès du repertoire depuis son pere le plus ancien
case "CheminComplet":
if($this->Pere_ !== NULL)
{
return $this->Pere_->CheminComplet."/".$this->Nom_;
}
else
{
return $this->Nom_;
}
break;
}
}
/*
*/
} |
Partager