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 18:15:22 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20120614 Thunderbird/13.0.1

je suis en train de corriger les warnings en mode strict sous php5.4
mais je crois bien que c'est un trou sans fond dans dolibarr ;-))
par contre c'est bien utile pour nettoyer le code, il y a pleins
d'erreurs et d'oublis qui remontent...


Le 09/07/12 12:28, Régis Houssin a écrit :
> par contre celui là convient apparemment
>
> if (! isset($this->$modulename) || ! is_object($this->$modulename))
>
>
> Le 09/07/12 11:06, address@hidden a écrit :
>>>> if (!isset($this->$modulename) && !is_object($this->$modulename))
>> Il s'arrêtera sur le premier isset je crois et donc t'aura pas l'erreur du 
>> isobject
>>
>>
>> Le 9 juil. 2012 à 10:59, Régis Houssin a écrit :
>>
>>> 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/
>>> ---------------------------------------------------------
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Dolibarr-dev mailing list
>>> address@hidden
>>> https://lists.nongnu.org/mailman/listinfo/dolibarr-dev
>> _______________________________________________
>> Dolibarr-dev mailing list
>> address@hidden
>> https://lists.nongnu.org/mailman/listinfo/dolibarr-dev
>>
> 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]