[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Dolibarr-dev] appel au secours
From: |
address@hidden |
Subject: |
Re: [Dolibarr-dev] appel au secours |
Date: |
Mon, 9 Jul 2012 11:06:17 +0200 |
>> 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