[Top][All Lists]
[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/
---------------------------------------------------------