[RESOLU] mettre un objet dans une variable de session

Eléphant du PHP | 83 Messages

18 déc. 2020, 23:42

Bonsoir,

j'ai besoin de transmettre un objet à des méthodes (l'objet est censé contenir des données à afficher, donc plusieurs méthodes doivent y accéder pour l'alimenter).
$ref_LicenseData = new LicenseData();
.
class LicenseData
{
    private $sesa;
    private $appli;
    private $list_applis;
    private $appli_name;
    /**
     * @param $sesa
     * role : pour le $sesa fourni, extrait les infos de la bdd (appel de 3 méthodes du modèle), puis retourne ds un
     * tableau l'ensemble des données (format directement exploitable par PhpEcho)
     * @return array
     */
    public function SendDataToDisplay( $sesa ) : array
    { 
    etc
Il y a pour l'instant très peu de propriétés, mais ça va s'étoffer quand le mécanisme sera au point.

Il n'est pas possible de le passer en paramètre à ces méthodes. En effet, celles-ci appartiennent à des classes qui vont être appelées en tant qu'action d'un formulaire.
Exemple :
<form method="post" action=" ?action=DispListApp">
    <select name="list" onChange="this.parentNode.submit()"> 
    etc
     

Dans cet exemple, le formulaire est constitué d'un select et quand l'utilisateur sélectionnera une valeur, l'action sera appelée (grâce au onChange). L'action (ici DispListApp) va être prise en charge par le routeur, qui va appeler une méthode d'une classe (disons LicenseDispListApp() ). Supposons que cette méthode ait besoin d'accéder à l'objet $ref_LicenseData . Comment transmettre cette variable à la méthode, sachant qu'il n'est pas possible de lui passer un paramètre ?
J'ai eu l'idée de stocker cet objet dans une variable de session :
 $_SESSION['ref_LicenseData'] = $ref_LicenseData; 
.

Mais ça ne semble pas marcher. En effet, dans la classe LicenseData, j'ai créé un setter et un getter :
class LicenseData
{ //réduit à ce qui nous intéresse
 private $appli_name;
 
 public function setAppliName($appli_name)
    {
        $this->appli_name = $appli_name;
    }
 
    public function getAppliName()
    {
        return $this->appli_name;
    }
}
J'appelle le setter et juste derrière le getter et je constate que la propriété $appli_name est NULL alors que je viens d'y mettre une valeur.

Si mon explication est claire, comment transmettre le référent vers l'objet ?

Petit nouveau ! | 3 Messages

19 déc. 2020, 14:20

Bonjour Laurents

Ce que tu veux faire semble possible avec serialize : https://stackoverflow.com/questions/144 ... hp-session

Eléphant du PHP | 83 Messages

20 déc. 2020, 00:54

Je ne vois ta réponse que vers minuit ! Cela dit, j'ai changé ma conception et n'ai plus ce besoin...Merci quand même.