Avis sur ma classe FTP

Avis sur ma classe FTP - PHP - Programmation

Marsh Posté le 22-10-2008 à 11:26:44    

Bonjour à tous,
 
Bon, je n'ai aucun problème à signaler dans un de mes codes mais je veux juste votre avis.
Voilà je me lance dans la POO avec php et j'aimerai savoir si la classe FTP que je viens  
de créer (elle fonctionne) codée correctement.
 
Je vous rassure, elle n'est pas finie il y a encore des méthodes incomplètes, maintenant place au code:
 

Code :
  1. class FTP
  2. {
  3. //CONCERNE LE FTP
  4. private $ftp;
  5. private $login;
  6. private $password;
  7. private $path_serveur_upload;
  8. private $path_serveur_racine;
  9. private $path_serveur_courant;
  10. //CONCERNE L'UTILISATEUR
  11. private $nom_fichier;
  12. private $type_fichier;
  13. private $size_fichier;
  14. private $tmp_fichier;
  15. function __construct()
  16. {
  17.  $this->ftp="";
  18.  $this->login="";
  19.  $this->password="";
  20.  $this->path_serveur_upload="";
  21.  $this->path_serveur_racine="";
  22.  $this->path_serveur_courant=$this->path_serveur_racine;
  23.  $this->path_courant="";
  24.  $this->nom_fichier="";
  25.  $this->type_fichier="";
  26.  $this->size_fichier="";
  27.  $this->tmp_fichier="";
  28. }
  29. function __destruct(){}
  30. //ACCESSEURS
  31. public function GET_ftp()
  32. {
  33.  return $this->ftp;
  34. }
  35. public function GET_login()
  36. {
  37.  return $this->login;
  38. }
  39. public function GET_password()
  40. {
  41.  return $this->password;
  42. }
  43. public function GET_path_serveur_upload()
  44. {
  45.  return $this->path_serveur_upload;
  46. }
  47. public function GET_path_serveur_racine()
  48. {
  49.  return $this->path_serveur_racine;
  50. }
  51. public function GET_path_serveur_courant()
  52. {
  53.  return $this->path_serveur_courant;
  54. }
  55. public function GET_nom_fichier()
  56. {
  57.  return $this->nom_fichier;
  58. }
  59. public function GET_type_fichier()
  60. {
  61.  return $this->type_fichier;
  62. }
  63. public function GET_size_fichier()
  64. {
  65.  return $this->size_fichier;
  66. }
  67. public function GET_tmp_fichier()
  68. {
  69.  return $this->tmp_fichier;
  70. }
  71. //MUTATEURS
  72. public function SET_ftp($val)
  73. {
  74.  $this->ftp=$val;
  75. }
  76. public function SET_login($val)
  77. {
  78.  $this->login=$val;
  79. }
  80. public function SET_password($val)
  81. {
  82.  $this->password=$val;
  83. }
  84. public function SET_path_serveur_upload($val)
  85. {
  86.  $this->path_serveur_upload=$val;
  87. }
  88. public function SET_path_serveur_racine($val)
  89. {
  90.  $this->path_serveur_racine=$val;
  91.  $this->path_serveur_courant=$val;
  92. }
  93. public function SET_path_serveur_courant($val)
  94. {
  95.  $this->path_serveur_courant=$val;
  96. }
  97. public function SET_nom_fichier($val)
  98. {
  99.  $this->nom_fichier=$val;
  100. }
  101. public function SET_type_fichier($val)
  102. {
  103.  $this->type_fichier=$val;
  104. }
  105. public function SET_size_fichier($val)
  106. {
  107.  $this->size_fichier=$val;
  108. }
  109. public function SET_tmp_fichier($val)
  110. {
  111.  $this->tmp_fichier=$val;
  112. }
  113. //AUTRES METHODES
  114. protected function Connect()
  115. {
  116.  $conn_id=ftp_connect($this->ftp);
  117.  if (@ftp_login($conn_id, $this->login, $this->password))
  118.  {
  119.   return $conn_id;
  120.  }
  121.  else
  122.  {
  123.   return false;
  124.  }
  125. }
  126. protected function Close($ftp_stream)
  127. {
  128.  ftp_close($ftp_stream);
  129. }
  130. public function FileUpload()
  131. {
  132.  $ftp_stream=$this->Connect();
  133.  if(!$ftp_stream)
  134.  {
  135.   echo "La connexion a échouée";
  136.  }
  137.  else
  138.  {
  139.   ftp_put($ftp_stream,$this->path_serveur_upload,$this->tmp_fichier.$this->nom_fichier,FTP_ASCII);
  140.   $this->Close($ftp_stream);
  141.  }
  142. }
  143. public function FileDownload()
  144. {
  145. }
  146. public function ListRep()
  147. {
  148.  $ftp_stream=$this->Connect();
  149.  if(!$ftp_stream)
  150.  {
  151.   echo "La connexion a échouée";
  152.  }
  153.  else
  154.  {
  155.   $tab=ftp_nlist($ftp_stream,$this->GET_path_serveur_courant());
  156.   if(!$tab)
  157.   {
  158.    echo "Il n'y a aucun fichier";
  159.   }
  160.   else
  161.   {
  162.    foreach($tab as $value)
  163.    {
  164.     echo $value."<br />";
  165.    }
  166.    $this->Close($ftp_stream);
  167.   }
  168.  }
  169. }
  170. public function ParentRep()
  171. {
  172.  $path=$this->path_serveur_courant;
  173.  $path=explode("/",$path);
  174.  $nb_case=count($path)-2;
  175.  for($i=0;$i<$nb_case;$i++)
  176.  {
  177.   $npath.=$path[$i]."/";
  178.  }
  179.  $this->path_serveur_courant=$npath;
  180.  $this->ListRep();
  181. }
  182. public function DeleteFile($file)
  183. {
  184.  //ftp_delete
  185. }
  186. public function CreateDir($dirname)
  187. {
  188.  $ftp_stream=$this->Connect();
  189.  if(!$ftp_stream)
  190.  {
  191.   echo "La connexion a &eacute;chou&eacute;e";
  192.  }
  193.  else
  194.  {
  195.   error_reporting(0);
  196.   if(!ftp_mkdir($ftp_stream,$this->path_serveur_courant.$dirname))
  197.   {
  198.    echo "Le r&eacute;pertoire ".$dirname." existe d&eacute;j&agrave;<br />";
  199.   }
  200.   $this->Close($ftp_stream);
  201.  }
  202.  $this->ListRep();
  203. }
  204. public function RenameFile()
  205. {
  206.  //ftp_rename
  207. }
  208. public function DeleteDir($dirname)
  209. {
  210.  $ftp_stream=$this->Connect();
  211.  if(!$ftp_stream)
  212.  {
  213.   echo "La connexion a &eacute;chou&eacute;e";
  214.  }
  215.  else
  216.  {
  217.   ftp_rmdir($ftp_stream,$this->path_serveur_courant.$dirname);
  218.   $this->Close($ftp_stream);
  219.  }
  220.  $this->ListRep();
  221. }
  222. }


 
PS: je sais que tout les accesseurs et mutateurs ne sont pas forcément nécessaires ;)

Reply

Marsh Posté le 22-10-2008 à 11:26:44   

Reply

Marsh Posté le 22-10-2008 à 11:50:34    

J'aime pas trop ta "convention" de nommage, des _ pour les getters et setters et une synthaxe java pour le reste.
 
Je crois que les premières lettres des méthodes ne prennent pas de majuscule en Java.
 
Sinon peut être pourrais-tu donner un peu d'intelligence au constructeur et inclure la livraison de paramètres au niveau de l'instanciation.

Reply

Marsh Posté le 22-10-2008 à 12:16:04    

Ouais c'est prévu d'affecter directement les valeurs au constructeur pour une économie de ligne dans le programme principal

Reply

Marsh Posté le 22-10-2008 à 12:19:53    

C'est pas qu'une économie de ligne, c'est surtout qu'un constructeur est censé livrer un objet exploitable :)
 
Pour les erreurs, utilise peut-être des exceptions au lieu de simples echo qui ne permettent pas une gestion correcte.

Reply

Marsh Posté le 22-10-2008 à 12:31:11    

FlorentG a écrit :

C'est pas qu'une économie de ligne, c'est surtout qu'un constructeur est censé livrer un objet exploitable :)
 
Pour les erreurs, utilise peut-être des exceptions au lieu de simples echo qui ne permettent pas une gestion correcte.


+1, et il faudrait ajouter:

  • Des défauts corrects dans le constructeur, genre "~" en path local et "/" en path remote
  • connect n'a aucune raison d'être protected, il devrait être private
  • l'API pour l'upload est immonde, pourquoi ne pas filer juste un chemin de fichier local et en option un nom de fichier remote (par défaut, le fichier remote a le même nom que le fichier local et baste)
  • Une opération type "cd" serait bien plus utile qu'un ParentRep hardcodé (suffit de cd(".." ) et c'est équivalent)
  • C'est la première fois que je vois quelqu'un utiliser les code conv' C# en PHP [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed