dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] appel au secours


From: Régis Houssin
Subject: Re: [Dolibarr-dev] appel au secours
Date: Mon, 09 Jul 2012 10:59:31 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20120614 Thunderbird/13.0.1

j'ai résolu le problème en remplaçant le is_object par un isset

merci


Le 09/07/12 10:52, Régis Houssin a écrit :
> en fait :
>
> $this->$modulename=new StdClass();
>
> ou
>
> $this->$modulename=(object) array();
>
> c'est la même chose
>
> par contre je viens de comprendre ce qui cloche,
> c'est lorsque je test si $this->$modulename est un objet
>
> if (! is_object($this->$modulename))
>
> c'est ce test qui crée le message en mode strict (php 5.4)
>
> et j'ai besoin de ce test afin d'éviter d'écraser l'objet, dans la
> boucle qui charge les droits des utilisateurs par exemple.
>
> que faire ?
>
>
> Le 09/07/12 10:29, aurelien Imhof a écrit :
>> Hello , 
>>
>>
>> Juste comme ca , pour moi , d'utiliser des variable avec this , même non 
>> defini 
>> ne produise pas une erreur de type strict. 
>>
>> Par contre ce sera vrai pour les variable dans la class qui sont defini 
>> comme 
>> static, et qui dans ce cas, doivent nécessairement être déclarés.
>>
>>
>> La dans ton retour d'erreur , 
>>
>> Undefined property: Conf::$facture
>>
>> Tu fait appel à tes variable sous la forme de 
>>
>>
>> Conf::$facture 
>>
>>
>> ??? 
>>
>> Parce que sinon , perso je n'arrive pas à produire une erreur avec une 
>> boucle 
>> comme la tienne ... 
>>
>>
>> J'ai utilisé ca 
>>
>> Class test {
>>
>>              public $facture;
>>
>>              function __construct($res){
>>
>>
>>
>>                              foreach($res as $row){
>>                                              $modulename=strtolower($row);
>>                                              $this->$modulename=new 
>> StdClass();
>>                                              
>> $this->$modulename->enabled=true;
>>
>>                              }
>>
>>                              foreach($res as $row){
>>                                              if($this->$row->enabled)
>>                                                              echo 'ok';
>>                              }
>>              }
>>
>> }
>>
>> $r = new test(array('facture', 'device', 'propal'));
>> print_r($r);
>>
>>
>>
>>
>> PS , pourquoi tu utilise 
>> $modulename=(object) array();
>>
>> plutot que 
>>
>> $modulename=new StdClass();
>>
>> Aurélien 
>>
>>
>>
>> Le lundi 9 juillet 2012 09:27:48 vous avez écrit :
>>> Hello
>>>
>>> je me prend la tête sur un problème,
>>> nous avons ceci dans une boucle dans conf.class.php
>>>
>>> $modulename=strtolower($reg[1]);
>>> $this->$modulename=(object) array();
>>> $this->$modulename->enabled=true;
>>>
>>> ça récupère le nom des modules activés dans llx_const et ça crée un
>>> objet dans la global $conf pour nous dire que ce module est activé
>>>
>>> $conf->facture->enabled
>>>
>>> par contre en mode strict de php nous avons forcément des erreurs de ce
>>> style car il est impensable de pouvoir déclarer toutes ces variables en
>>> début de classe :
>>>
>>> Undefined property: Conf::$facture
>>>
>>> connaissez vous un moyen autre que les fonctions magiques _set et _get
>>> pour solutionner ce problème ?
>>> idem si vous me dites d'enlever le mode strict :-))
>>>
>>> merci
>>>
>>> Cordialement,
> Cordialement,

Cordialement,
-- 
Régis Houssin
---------------------------------------------------------
Cap-Networks
Cidex 1130
34, route de Gigny
71240 MARNAY
FRANCE
VoIP: +33 1 83 62 40 03
GSM: +33 6 33 02 07 97
Web: http://www.cap-networks.com/
Email: address@hidden

Dolibarr developer: address@hidden
Web Portal: http://www.dolibarr.fr/
SaaS offers: http://www.dolibox.fr/
Shop: http://www.dolistore.com/
Development platform: https://doliforge.org/
---------------------------------------------------------






reply via email to

[Prev in Thread] Current Thread [Next in Thread]