IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

POO CLASS HÉRITAGE [POO]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut POO CLASS HÉRITAGE
    class/Post.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Post {
     
    	protected $_id;
    	protected $_texte;
    	protected $_dt_creation;
    	protected $_title;
     
    	public function __construct(array $data) {
     
    		$this->setId($data['id']);
    		$this->setText($data['texte']);
    		$this->setDt_creation($data['dt_creation']);
    		$this->setTitle($data['title']);
    	}
     
    	public function setId($id) {
     
    		if((is_int($id)) AND ($id > 0)) {
     
    			$this->id = $id;
    		}
    	}
     
    	public function setText($texte) {
     
    		if(is_string($texte)) {
     
    			$this->texte = $texte;
    		}
    	}
     
    	public function setDt_creation($dt_creation) {
     
    		list($y, $m, $d) = explode("-", $dt_creation);
     
    		if(checkdate($m, $d, $y)) {
     
    			$this->dt_creation = $dt_creation;
    		}
    	}
     
    	public function setTitle($title) {
     
    		if(is_string($title)) {
     
    			$this->title = $title;
    		}
    	}
     
    	public function getId() {
     
    		return $this->id;
    	}
     
    	public function getText() {
     
    		return $this->texte;
    	}
     
    	public function getDt_creation() {
     
    		return $this->dt_creation;
    	}
     
    	public function getTitle() {
     
    		return $this->title;
    	}
    }
     
    class Breve extends Post {
     
    	public function __construct(array $data) {
     
    		$this->setId($data['id']);
     
    		$this->setText($data['texte']);
     
    		$this->setDt_creation($data['dt_creation']);
     
    		$this->setTitle(); l'erreur se trouve ici
     
    	}
     
    	public function setTitle($title) {
     
    		$this->title = null;
     
    	}
    }
     
    class Filet extends Post {
     
    }
    index.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    require('class/Post.php');
     
    $values = array('id' => 1, 'texte' => 'Contenu de la brève', 'dt_creation' => '2013-11-14', 'title' => '');
     
    $post = new Post($values);
    $post->setId(1);
    $post->setText('Contenu de la brève');
    $post->setDt_creation('2013-11-14');
    $post->setTitle('');
     
    echo $post->getId() . '<br>';
    echo $post->getText() . '<br>';
    echo $post->getDt_creation() . '<br>';
    echo $post->getTitle() . '<br>';
     
    $post_data = array('id' => 1, 'texte' => 'Texte pour le contenu', 'dt_creation' => '2013-10-14', 'title' => '');
    $post = new Post($post_data); 
     
    $db = new PDO('mysql:host=localhost;dbname=dbpost', 'root', ''); 
     
    $manager = new postManager($db); 
     
    $manager->addPost($post);
     
    echo $post->getId() . '<br>';
    echo $post->getText() . '<br>';
    echo $post->getDt_creation() . '<br>';
    echo $post->getTitle() . '<br>';
     
    $deletePost = $manager->deletePost(1);
    echo $deletePost;
     
    $post = $manager->getPost();
    var_dump($post);
     
    $current_post = $manager->getPost(2);
    var_dump($current_post);
     
    $new_content = array('id' => (int) $current_post[0]['id'], 'texte' => $current_post[0]['texte'],
    	'dt_creation' => $current_post[0]['dt_creation'], 'title' => $current_post[0]['title']);
     
    $post_to_update = new Post($new_content);
     
    $post_to_update->setText('Nouveau contenu de la brève');
     
    $manager->updatePost($post_to_update);
     
    $check_post = $manager->getPost(2);
    var_dump($check_post);
     
    $breve_data = array('id' => 1, 'texte' => 'Un texte', 'dt_creation' => '2013-11-15');
    $breve = new Breve($breve_data);
     
    $breve->setId(1);
    $breve->setText('Un texte');
    $breve->setDt_creation('2013-11-15');
     
    echo $breve->getId() . '<br>';
    echo $breve->getText() . '<br>';
    echo $breve->getDt_creation() . '<br>';
     
    $filet_data = array('id' => 1, 'texte' => 'Un autre texte', 'dt_creation' => '2013-11-15', 'title' => 'Titre du filet');
    $filet = new Filet($filet_data);
     
    $filet->setId(1);
    $filet->setText('Un autre texte');
    $filet->setDt_creation('2013-11-15');
    $filet->setTitle('Titre du filet');
     
    echo $filet->getId() . '<br>';
    echo $filet->getText() . '<br>';
    echo $filet->getDt_creation() . '<br>';
    echo $filet->getTitle() . '<br>';

    Bonjour, j'ai une erreur dans ce fichier (Remarque: propriété non définie: Post :: $ title dans C: \ wamp64 \ www \ php-expert \ 04-cours-breve \ class \ Post.php)

    Besoin d'aide, merci d'avance & bonne journée.

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Il manque un underscore ligne 48 de post.php. Il faudrait $this->_title = $title; (d'ailleurs, même erreur dans tous les getters et setters ; le plus simple doit être de renommer les propriétés, donc de virer les underscores...)

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Quand les attributs sont protected, on doit retirer le $ + underscore, alors c'est faux d'après ce que vous dites ?

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Je suis loin d'être un expert en POO (ni en rien d'ailleurs !), mais je doute fort qu'il faille enlever le _ (seulement le $)(le mieux est de faire l'essai)

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    dans les langages sans gestion de la visibilité, il est de coutume de définir des règles de nommage, en particulier pour indiquer au développeur que la variable est de visibilité protected on la fait précéder par un _, souvent pour une visibilité private, c'est __.
    Comme en PHP la gestion de la visibilité est native, tu peux omettre les _ et les __ en guise de premier caractères dans les nommage de tes variables.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Ok merci bien pour l'info

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] [POO] Classes, héritage et implémentation
    Par Lezepal dans le forum Langage
    Réponses: 5
    Dernier message: 08/12/2009, 21h46
  2. [POO] classe héritage et assert
    Par sarainformatique dans le forum C++
    Réponses: 2
    Dernier message: 12/12/2008, 17h45
  3. [POO] Problème héritage des classes PHP4
    Par zana74 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2006, 16h00
  4. [POO] Class Défilementa automatique d'images avec animation
    Par rakoto.n dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/01/2005, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo