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 :

Héritage et Static


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut Héritage et Static
    Ola

    Dans l'idée, je me suis fait une petite classe qui gère les enregistrements en BDD.

    Dans l'idée :
    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
     
    abstract class database {
    	protected $ID ; // ID of record
    	protected $date_created ;
    	protected $date_modified ;
    	protected $data ;
    	static protected $LIST_DATA = array() ;
    	static protected $table ;
    	private $query ; // array of query
     
    	function __construct($ID=NULL)
    	public function setData($ressource)
    	function getID()
    	function getData($field)
    	function getAllData()
    	function loadDataFromID()
    	function add() {
    		...
    		$sql = "INSERT
    			INTO ".STATIC::$table."(".implode(',',STATIC::$LIST_DATA).")
    			VALUES (".$list_prep.")" ;
     
    		...
    	}
    	function update()
    	function save()
    	function delete()
    	function __destruct()
    }
    Avec mes STATIC $LIST_DATA et $table qui sont définies dans les classes filles. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class point extends database {
    	static protected $LIST_DATA = array('point_lg','point_lt','point_order','route_id') ;
    	static protected $table = 'cv_points' ;
     
    ... mes méthodes étendues ou surchargées en plus des héritées
    }
    En php 5.3 ça roule, mais en 5.2 ça coince.
    J'ai lu ça : http://fr.php.net/manual/fr/language.oop5.static.php

    Je voulais savoir si quand même il y avait une erreur de conception ou si c'était possible de mieux faire, à défaut de rendre les choses possibles avec php 5.2 ?

    a+
    Nico

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    tu peux regardé du coté du singleton/factory

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    database::gettable('test')->getAllData();

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    tu peux regardé du coté du singleton/factory

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    database::gettable('test')->getAllData();
    Ola

    Ben j'ai déjà un singleton pour gérer la connexion à la base.
    Là je veux une classe abstraite qui gèrent les manipulations des enregistrements (ajout suppression, modification, affichage débuggage...)

    Le factory pourrait répondre (mais je suis pas sûr), mais je pense que ça doit être documenté sur le sujet.
    Si il y a un lien qui va bien ?

    a+
    Nico

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    si tu reste en PHP 5.3 y'a pas de problème avec ta méthode

    pour factory c'est dans la doc :
    http://www.php.net/manual/fr/language.oop5.patterns.php


  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    En php 5.3 ça roule, mais en 5.2 ça coince.
    L'usage du late static binding (le fait d'utiliser static::attribut) est un élément nouveau de PHP 5.3. ça ne fonctionnera JAMAIS en PHP 5.2. Désolé.

Discussions similaires

  1. [PHP 5.3] Questions héritage class static
    Par Général03 dans le forum Langage
    Réponses: 12
    Dernier message: 13/05/2011, 16h40
  2. Héritage et static
    Par cycloop dans le forum Langage
    Réponses: 8
    Dernier message: 18/04/2011, 10h17
  3. [POO] Méthode static et héritage
    Par Mogwaï dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2008, 13h31
  4. [POO] Héritage et variable static
    Par Al3x dans le forum Langage
    Réponses: 3
    Dernier message: 23/12/2007, 18h27
  5. [héritage] héritage d'une variable static
    Par yaya44 dans le forum Langage
    Réponses: 14
    Dernier message: 29/09/2004, 14h36

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