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: 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




reply via email to

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