S'enregistrer | Rechercher | FAQ | Liste des Membres | Groupes d'utilisateurs | Connexion

  Nom d'utilisateur:    Mot de passe:       

  

Poster un nouveau sujet   Répondre au sujet Page 1 sur 1
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
MessagePosté le: Jeu Déc 09, 2010 2:45 pm    Sujet du message: Retour sur le PHP Répondre en citant

GOLGOTA
Projets


 
Inscrit le: 04 Aoû 2010
Messages: 23



Salut Very Happy

Bon voilà, après quelques mois de travail (enfin, si on veut) en musique, essais de motivation de la population de mon école, installation d'un Drupal, lancement d'un site etc... ça ne donne rien, alors je me suis dit que j'allais revenir aux sources et continuer d'apprendre à programmer en Php, pepèrement en faisant évoluer un blog strictement personnel qui n'aura plus rien avoir avec l'école (à part la musique).

Je reprend donc le développement de mon site et pour commencer l'affaire, je vais pousser mes limites de programmeur, voir les class en php.

Pour l'instant j'essaye encore de capter le concept et l'utilité de la chose, voici donc ce que j'ai compris pour l'instant :

Les class permettrait de ranger des fonctions par catégories d'objets. Donc par catégories d'outils qu'on veut développer, par exemple, un outils d'articles aurait des fonctions telle que l'affichage d'un article, la rédaction, traitement des données, editions, suppression.

Si je me trompe corriger moi hein, j'avance à tâtons.

Dans ces class, on déclare des variables et des fonctions de trois types différents, c'est un peu la que je bloque, je vais tenter une approche d'explications qui mettront surement mes erreurs en évidence Wink

Public : Si j'ai bien compris, le mode public permettrait d'accèder à une variable ou une fonction depuis une autre class ? (ou alors à partir d'une extension de la class principale ?)

Private : Accessible seulement par la class d'origine. Peut etre traiter par une extension de la class via une fonction __get() ou __set() de la class principale ?

Protected : Accessible aux par une extension de class..

Bon en fait, c'est le protected qui me fait bugger, si j'ai bien compris :
ma variable public $pouet; contenue dans la class pouetpouet serait accessible Ă  partir de la class pet ?

Mais si je met cette variable en Private, elle ne serait pas accessible via la class pet ?

Et si je la met en Protected, la variable $pouet serait accessible dans la class pouetpouet et ses extensions ?

Merci d'avance,

Golgota
Voir le profil de l'utilisateur Envoyer un message privés
MessagePosté le: Jeu Déc 09, 2010 2:59 pm    Sujet du message: Répondre en citant

GRIMMJOWBO
Modérateur


 
Inscrit le: 07 Mai 2010
Messages: 778
Localisation: France



Plop, pas beaucoup de temps pour te répondre désolé je te donne juste un lien qui t'aidera à comprendre:hxxp://blog.jacksay.com/index.php?post/2008/02/14/11-php-5-public-private-et-protected
Moi aussi je débute en PHPOO et j'ai compris ça il n'y a pas longtemps Smile
A+ Wink
Voir le profil de l'utilisateur Envoyer un message privés Messagerie InstantanĂ©e MSN Messenger
MessagePosté le: Jeu Déc 09, 2010 3:12 pm    Sujet du message: Répondre en citant

GOLGOTA
Projets


 
Inscrit le: 04 Aoû 2010
Messages: 23



Ok ! Merci bien, le gars explique ça assez clairement je dois dire Smile
Je continue mes investigations, je reviendrais avec une class construite voir ce que vous en pensez Smile

Merci encore !

Golgota
Voir le profil de l'utilisateur Envoyer un message privés
MessagePosté le: Jeu Déc 09, 2010 6:19 pm    Sujet du message: Répondre en citant

GOLGOTA
Projets


 
Inscrit le: 04 Aoû 2010
Messages: 23



Je fais un doublon pour up un coup et poster l'exemple de class que je viens de faire.



Bon en gros c'est une class pour créer des articles sur un site (non vrai?!).

Toutes les fonction d'éditions, de création, suppression, etc... tapées en admin avec un private, j'imagine que c'est plus "sécuriser".

D'ailleurs en parlant de sécurité, je ne comprend pas très bien comment quelqu'un pourrait utiliser mon code pour élargir une faille ?!

Se pourrait-il que si j'avais fait des fonction toute bête, lachées dans la page php, quelqu'un de mal intentionné aurait pu faire des trucs du genre :

http://www.monsite.tld/index.php?page=fonction() ?

Un truc dans le genre hein ?!

Bref, voici mon morceau de code, n'hésitez pas à me donner des conseils sur la manière dont sont faites les fonctions, par exemple si il est possible de les divisées, en créant d'autre fonctions (je pensais au déplacement dans des catégorie par exemple).

J'aimerais bien d'ailleurs créer une fonction qui me permette de géré plus facilement mes requêtes et mes transferts de données avec la base.
Bref ! Voici le code ! toutes les fonctions ne sont pas écrites, c'est juste histoire de présenter un exemple Wink

Code:

<?

class Articles
{
   private $id;
   private $titre;
   private $contenu;
   private $categorie;
   private $sous_categorie;
   private $date;
   private $description;
   private $meta;
   private $auteur;
   private $publie;
   private $sources;

   // Fonction permettant de changer la valeur d'une variable Ă  partir d'une class extension
   public function set($variable, $valeur)
   {
      $this->data[$variable] = $valeur;
   }

   // Fonction permettant de rĂ©cupĂ©rĂ© la valeur d'une variable Ă  partir d'une class extension
   public function get($variable)
   {
      if (array_key_exists($variable, $this->data))
      {
                  return $this->data[$variable];
      }
      $trace = debug_backtrace();
           trigger_error(
                  'PropriĂ©tĂ© non-dĂ©finie via __get(): ' . $variable .
                 ' dans ' . $trace[0]['file'] .
                  ' Ă  la ligne ' . $trace[0]['line'],
               E_USER_NOTICE);
           return null;
   }
   
   // Fonction de construction      
   public function __construct($id)
   {
      if(isset($id))
      {
         // On veut charger un article.
      }
   }

   // Fonction de destruction
   public function __destruct()
   {   
      // Destruction de l'article
   }
}

class Admin_Articles_Article extends Articles
{
   // Fonction de traitement des donnĂ©es de crĂ©ation d'articles.
   private function art_creer()
   {
      // Les variable seront dĂ©finie, sur la page articles.php dans l'admin, comme suit  :
      // $variable = stripslashes($_POST['variable']);
      // $variable2 = stripslashes($_POST['variable2']);
      // etc...
      // $articles =  new articles();
      // $articles->set('var', $variable);
      // $articles->set('var', $variable2);
      // etc...

      $titre = get('titre');
      $contenu = get('contenu');
      $categorie = get('categorie');
      $sous_categorie = get('sous_categorie');
      $date = get('date');
      $meta = get('meta');
      $auteur = get('auteur');
      $publie = get('publie');
      $sources = get('sources');

      $requete = $bdd->prepare('INSERT INTO article (titre, contenu, categorie, sous_categorie, date, meta, auteur, publie, sources) VALUES
                 (:titre, :contenu, :categorie, :sous_categorie, :date, :meta, :auteur, :publie, :sources)');
      $requete->execute(array(
      'titre' => $titre,
      'contenu' => $contenu,
      'categorie' => $categorie,
      'sous_categorie' => $sous_categorie,
      'date' => $date,
      'meta' => $meta,
      'auteur' => $auteur,
      'id_auteur' => $id_auteur,
      'publie' => $publie,
      'sources' => $sources));
   }
   
   // Fonction permettant de sauvegarder un article en cours de rĂ©daction.
   private function art_sauvegarde()
   {
      
   }

   // Fonction de traitement des donnĂ©es d'Ă©dition d'articles.
   private function art_edition()
   {
   }

   // Fonction de dĂ©placement d'article dans les sections et sous section
   private function art_deplacement()
   {
   }

   // Fonction de suppression d'un article.
   private function art_suppression()
   {
      
   }
}

class Admin_Articles_categorie extends Articles
{
   private $nom;
   private $parent;

   // Fonction de traitement des donnĂ©es de catĂ©gorie.
   private function cat_creer()
   {
      
   }

   // Fonction de traitement des donnĂ©es d'Ă©dition de catĂ©gorie.   
   private function cat_edition()
   {
   }

   // Fonction de dĂ©placement de catĂ©gorie.
   private function cat_deplacement()
   {
      
   }

   // Fonction de suppression de catĂ©gorie.
   private function cat_suppression()
   {
      
   }
}
Voir le profil de l'utilisateur Envoyer un message privés
Poster un nouveau sujet   Répondre au sujet Page 1 sur 1

  


 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum



110251 Attacks blocked