Retour sur le PHP

Moderator: Mod

Retour sur le PHP

Postby GOLGOTA » Thu Dec 09, 2010 2:45 pm

Salut :D

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 ;)

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
GOLGOTA
Projets
 
Posts: 23
Joined: Wed Aug 04, 2010 12:15 pm

Postby GRIMMJOWBO » Thu Dec 09, 2010 2:59 pm

Plop, pas beaucoup de temps pour te répondre désolé je te donne juste un lien qui t'aidera à comprendre:[url]hxxp://blog.jacksay.com/index.php?post/2008/02/14/11-php-5-public-private-et-protected[/url]
Moi aussi je débute en PHPOO et j'ai compris ça il n'y a pas longtemps :)
A+ :wink:
User avatar
GRIMMJOWBO
 
Posts: 778
Joined: Fri May 07, 2010 7:14 pm
Location: France

Postby GOLGOTA » Thu Dec 09, 2010 3:12 pm

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

Merci encore !

Golgota
GOLGOTA
Projets
 
Posts: 23
Joined: Wed Aug 04, 2010 12:15 pm

Postby GOLGOTA » Thu Dec 09, 2010 6:19 pm

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 ;)

[code:1:e489984a70]
<?

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()
{

}
}
[/code:1:e489984a70]
GOLGOTA
Projets
 
Posts: 23
Joined: Wed Aug 04, 2010 12:15 pm


Return to Php

Who is online

Users browsing this forum: No registered users and 3 guests

cron