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

PHP & Base de données Discussion :

__get() __set() avec PHP8.2 sont ils toujours aussi Magique


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Points : 98
    Points
    98
    Par défaut __get() __set() avec PHP8.2 sont ils toujours aussi Magique
    Bonjour, depuis PHP 8.2 on ne peut plus déclarer dynamiquement les propriétés

    Quand on utilise __get() pour transformer l'appel d'une fonction $post->getUrl() en $post->url

    Si __get() si trouve dans une class (Article par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public function __get($key){
    		$method = 'get' . ucfirst($key);
    		$this->$key = $this->$method();
    		return $this->$method();
    	}
    Soit on ne défini pas $url pour que __get($key) s'exécute -> $url inconnu -> getUrl(), mais on a une erreur Article::url défini dynamiquement
    Soit on déclare $url, mais du coup __get($key) NE s'exécute PAS puisque la variable existe

    Est ce que j'ai bien compris le problème ?
    Et comment résoudre cela (ou les méthodes magiques il faut oublier)

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 399
    Points : 15 763
    Points
    15 763
    Par défaut
    je ne suis pas sur de comprendre la ligne "$this->$key = ...".
    si l'attribut n'existe pas, alors "__get" est appelé et donc vous ne pouvez pas accéder à cet attribut puisqu'il n'existe pas.

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/04/2018, 11h10
  2. Les annuaires sont-ils toujours utiles ?
    Par rodolphebrd dans le forum Référencement
    Réponses: 1
    Dernier message: 07/01/2014, 11h44
  3. Réponses: 4
    Dernier message: 08/03/2012, 08h50
  4. [WD16] Les programmes créés avec Windev sont-ils suffisamment protégés ?
    Par MicaelFelix dans le forum WinDev
    Réponses: 15
    Dernier message: 27/07/2011, 00h28
  5. Réponses: 4
    Dernier message: 26/11/2007, 12h25

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