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 :

__set qui intercepte des champs existants..?


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 25
    Points : 22
    Points
    22
    Par défaut __set qui intercepte des champs existants..?
    Bonjour,

    J'essai, depuis quelques temps, de trouver un moyen d'intercepter des champs déjà existants... j'ai découvert __set, qui remplis très bien son rôle tant qu'il s'agit d'un champ inaccessible, mais ça n'intercepte rien parmis les champs définis...

    La raison de cela:
    A la base, j'aimerais faire une classe de base qui intercepte tout les appels aux champs pour forcer un genre de cast en objet.
    En faisant un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function __set($field, $value) {
    	if(is_string($value)) {
    		$value = new String($value);
    	}
    	$this->{$field} = $value;
    }
    Vous ne sauriez pas comment forcer tous les appels par ce passage..?

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    biensur. protected & private sont tes amis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function __set($field, $value) {
    	if(property_exists($this,$field)) {
    	$this->$field = $value;
            }
    }

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    En fait, ce qui me dérange, c'est que si je crée une nouvelle classe qui étend cet base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Fruit extends Object {
    	protected $type;
     
    	public function Fruit () {
    		$this->type = "bannane";
    	}
    }
    Au moment où je fais le $this->type=..., ça appelle pas la méthode magique, parce qu'elle est visible dans le context.

    Mon but au final, ça serait de ne plus pouvoir manipuler des type primaire à partir du moment où j'étend cette base

Discussions similaires

  1. Valider un XML qui a des champs en plus du XSD
    Par zabojadek dans le forum Valider
    Réponses: 1
    Dernier message: 26/05/2010, 17h01
  2. zone de liste qui complete des champs
    Par enrone dans le forum IHM
    Réponses: 3
    Dernier message: 26/11/2009, 19h11
  3. Des occurrences qui deviennent des champs
    Par budtucker dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 04/04/2007, 10h35
  4. [PostGreSQL] Requête d'insertion qui ajoute des champs vides
    Par civodultrebor37 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/10/2006, 14h16
  5. Somme des champs ? existe t il une fonction ...
    Par dark_vidor dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/01/2006, 11h57

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