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 :

Modifier variable depuis l'exterieur de sa classe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de NoobX
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 195
    Par défaut Modifier variable depuis l'exterieur de sa classe
    Bonjour à tous,

    J'aimerais savoir si il est possible de modifier une variable contenu dans une classe PHP depuis l’extérieur de cette classe SVP :

    Mon objectif est d'ajouter un second tableau à la variable "$responsive_points" dans le code suivant :

    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
    <?php
    namespace Elementor;
     
    if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
     
    class Element_Column extends Element_Base {
     
    /*CODE NETTOYÉ POUR EXEMPLE*/
     
    	protected function _register_controls() {
     
    		$responsive_points = [
    			'screen_xs' => [
    				'title' => __( 'Mobile Portrait', 'elementor' ),
    				'class_prefix' => 'elementor-xs-',
    				'classes' => 'elementor-control-deprecated',
    				'description' => __( 'Deprecated: Mobile Portrait control is no longer supported. Please use the Mobile Width instead.', 'elementor' ),
    			],
    		];
     
    /*CODE NETTOYÉ POUR EXEMPLE*/
     
    		$this->end_controls_section();
     
    		Plugin::$instance->controls_manager->add_custom_css_controls( $this );
    	}
    Pensez-vous que cela soit réalisable SVP ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    $responsive_points est dans le scope de la fonction, il faudrait qu'elle soit dans la classe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Ta variable set locale à la méthode _register_controls donc elle n'existe plus une fois l'execution de cette méthode terminé.
    Ce n'est donc pas possible dans l'état.

    Ce qu'il est possible de faire c'est d'ajouter un membre à ta classe et de l'utiliser :

    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
    class Element_Column extends Element_Base {
     
        private $responsive_points;
     
    	protected function _register_controls() {
     
    		$this->responsive_points = [
    			'screen_xs' => [
    				'title' => __( 'Mobile Portrait', 'elementor' ),
    				'class_prefix' => 'elementor-xs-',
    				'classes' => 'elementor-control-deprecated',
    				'description' => __( 'Deprecated: Mobile Portrait control is no longer supported. Please use the Mobile Width instead.', 'elementor' ),
    			],
    		];
        }
     
        public function addResponsivePoints(array $data)
        {
            //Ajouter au tableau les données existantes
        }
     }
    Il faut ensuite appeler addResponsivePoints() pour modifier la variable
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Avatar de NoobX
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 195
    Par défaut
    Merci pour vos réponses

    Je ne peux hélas pas écrire directement dans la classe.

    Pensez-vous que j'ai une chance en utilisant extends ?

    Je cherche à obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		$responsive_points = [
    			'screen_sm' => [
    				'title' => __( 'Mobile Width', 'elementor' ),
    				'class_prefix' => 'elementor-sm-',
    				'classes' => '',
    				'description' => '',
    			],
    			'screen_xs' => [
    				'title' => __( 'Mobile Portrait', 'elementor' ),
    				'class_prefix' => 'elementor-xs-',
    				'classes' => 'elementor-control-deprecated',
    				'description' => __( 'Deprecated: Mobile Portrait control is no longer supported. Please use the Mobile Width instead.', 'elementor' ),
    			],
    		];

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Si tu dérives de ta classe tu peux éventuellement surcharger la méthode _register_controls mais ca implique de la réecrire dans la classe fille pour répondre au comportement que tu souhaites

    Exemple de surcharge simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Foo {
       public function myFoo() {
          return "Foo";
       }
    }
     
    class Bar extends Foo {
       public function myFoo() {
          return "Bar";
       }
    }
    Il est éventuellement possible dans la classe fille d'appeler la méthode mère pour récupérer son résultat avec parent::myFoo()
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Avatar de NoobX
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 195
    Par défaut
    Merci pour ton aide grunk !

    Visiblement ma demande est irréalisable sans changer le code d'origine

Discussions similaires

  1. Modifier un label a partir d'une class
    Par samzorINCA dans le forum ASP.NET
    Réponses: 25
    Dernier message: 01/09/2010, 10h00
  2. Modifier dynamiquement le code source d'une classe
    Par mahdi26_ca dans le forum C#
    Réponses: 4
    Dernier message: 30/07/2010, 16h12
  3. Comment modifier un contrôle depuis une classe ?
    Par pot2yaourt dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/07/2009, 15h01
  4. Modifier en javascript les attributs d'une classe CSS
    Par troumad dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/09/2007, 10h45

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