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

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,
-- 
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]