<?php
class utilisateur {
public function __construct($userId) {
//récuperation des informations concernant l'utilisateur
}
/**
* Something else
*/
}
class article {
private $authorId = null;
/**
* Something else
*/
public function getAuthorInformations() {
return new utilisateur($this->authorId);
}
/**
* Maybe something else again
*/
}
$article = new article($articleId);
$articleAuthorInformation = $article->getAuthorInformations();
class Utilisateur{
private $_nom = null;
private $_prenom = null;
//Accesseurs
public function set_nom( $value = null ){
if( $value != null ){
$this->_nom = $value;
}
}
public function set_prenom ( $value = null ){
if( $value != null ){
$this->_prenom = $value;
}
}
/*
* Retourne l'utilisateur courant
*/
public function quiSuisJe(){
echo "Je suis l'utilisateur $nom $prénom .";
}
...
}
class Article{
public function a_ui_est_article( $utilisateur = null ){
if( $utilisateur != null ){
$utilisateur->quiSuisJe();
}else{
//gestion d'exception ...
}
}
}
Tu peux donc faire ceci :$p_utilisateur = new Utilisateur();
$p_utilisateur->set_nom( "Moulin" );
$p_utilisateur->set_prenom( "jean" );
$p_article = new Article();
$p_article->a_ui_est_article( $p_utilisateur );
Ce qui va afficher :Code : Tout sélectionner
Je suis l'utilisateur Moulin Jean .Bien que la méthodologie soit juste, il y a cependant une petite erreur que je me permets de rectifier.......//... public function quiSuisJe(){ echo "Je suis l'utilisateur $this->_nom $this->_prenom ."; } //...
C'est pour mieux atomiser le code, rendre les choses plus claires et plus indépendantes.Merci de l'aide.
Une petite question encore.
A quoi sert vraiment les getters et les setters?
class Utilisateur
{
private $_nom = null;
private $_prenom = null;
public function __construct($nom = null, $prenom = null)
{
if( $nom != null ) $this->_nom = $nom;
if( $prenom != null ) $this->_prenom = $prenom;
}
public function quiSuisJe()
{
echo "Je suis l'utilisateur $this->_nom $this->_prenom .";
}
}
class Article{
public function a_qui_est_article( $utilisateur = null ){
if( $utilisateur != null ){
$utilisateur->quiSuisJe();
}else{
//gestion d'exception ...
}
}
}
$p_utilisateur = new Utilisateur('Moulin','Jean');
$p_article = new Article();
$p_article->a_qui_est_article( $p_utilisateur );
On fait exactement les mêmes contrôles que précédemment mais ne serait-ce que quand je déclare ma classe new Utilisateur, il faut que je sache dans quel ordre renseigner les paramètres -> mon exemple est moins facile à utiliser .
Un énorme avantage des getters et setters en tant que méthode est qu'on a une plus forte abstraction. Qui dit abstraction, dit maintenance et flexibilité accrues. Pourquoi ?Merci de l'aide.
Une petite question encore.
A quoi sert vraiment les getters et les setters?
La philosophie aussiL'abstraction est une des plus grandes forces du paradigme objet. N'hésitez pas à en abuser !
<?php
/*classe de connexion*/
class Connexion{
private $PARAM_hote;
private $PARAM_port;
private $PARAM_nom_bd;
private $PARAM_utilisateur;
private $PARAM_mdp;
public function __construct($PARAM_hote, $PARAM_port, $PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mdp)
{
$this->PARAM_hote=$PARAM_hote;
$this->PARAM_port=$PARAM_port;
$this->PARAM_nom_bd=$PARAM_nom_bd;
$this->PARAM_utilisateur=$PARAM_utilisateur;
}
public function connexion($PARAM_hote, $PARAM_port, $PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mdp)
{
try
{
$connexion=new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
catch(Exception $e)
{
echo "une erreur de connexion est apparue";
die();
}
}
}
?>
Je devrais utiliser cette méthode dans la classe article comme certains me l'ont expliqué comme stopher l'a fait?
Habituellement on a plutôt l'habitude d'utiliser un singleton pour établir une connexion à une bdd.J'ai fait deux classes:
-une connexion (PDO)
-une article.
Un discours théorique sans exemple à la clé reste souvent très abstrait même s'agissant d'un sujet concret. La concrétisation du passage de connaissance se fait par une mise en perspective qui demande souvent un exemple d'applicationUè, sauf que nous c'est concret (… … oui, l'abstrait est concret ici).