Page 1 sur 2
recuperer valeur d'unefunction dans un autre dans une class
Posté : 19 juin 2010, 01:07
par jeorcal
pourquoi ceci ne marche pas tout simplement ?
Code : Tout sélectionner
class A
{
function B(){
return " OK ",
}
function C(){
return $this->B();
}
}
la function C devrait retourner " OK "
que faut il faire pour récupérer ces valeurs de function à function en PHP ?
merci
merci
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 19 juin 2010, 07:13
par stealth35
faut vraiment que tu bosses en E_ALL | E_STRICT, t'as aucunes erreurs de conception juste de syntaxe

Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 19 juin 2010, 07:36
par jeorcal
en .net c'est de toute façon strict par défaut, tout doit être nommé et typé
si tu mets Joolmla en E_ALL | E_STRICT tu exploses l'application, t'as un roman d'erreurs, et le html généré c'est aussi une horreur
c'est quoi la syntaxe juste pour ça ?
à la place de $this->B(); ?
merci
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 19 juin 2010, 08:03
par stealth35
en .net c'est pareil voir mêmé pire que php et c'est qui fais la force du C
normalement tu devrais avoir aucune erreur en E_ALL | E_STRICT
en plus le C/C++ te dis les variable ou les classe qui ne sont pas utilisé au moment de la compilation, php c'est traitre dans le sans ou c'est un peu comme le HTML même si c'est mal codé le navigateur t'affiche quand même la chose, faire :
<ul>
<li> blablz
<li> truc
<li> machin
</ul>
en php c'est la même chose
ton return " OK ", c'est une virgule il attend un ;
si joomla t'affiche des erreurs c'est plutôt de ton coté

Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 19 juin 2010, 08:15
par jeorcal
la virgule à la place du point virgule c'est en écrivant un exemple ici, dans mon module je le verrais de suite ce serait souligné en rouge
je fais du .net depuis le tout début( la première version 1 alpha) et j'aime cette syntaxe où tout doit être déclaré, des class avec 1 ou plusieurs constructeurs , héritages ect ... tout est typé, les collections sont typées avec tes propres types ... j'ai juste du mal avec php
sinon les erreurs par tonnes viennent bien de Joomla , si je mets dans mon module
error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);
j'obtiens une centaine de lignes :
Strict Standards: JLoader::import() [jloader.import]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /www/joomtest/libraries/loader.php on line 186
Strict Standards: Non-static method JLoader::import() should not be called statically in /www/joomtest/libraries/loader.php on line 186
ect ...
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 19 juin 2010, 15:39
par stealth35
ouai php niveau du typage c'est aussi un peu trop souple a mon gout aussi mais bon ...
pour ton erreur ca viens du php.ini ou le default-timezone n'est pas renseigné
pour l'autre ca viens de joomla qui appelle statiquement une méthode non static, je te conseil de prendre la dernière version a moins que ca sois déjà fais
sinon au niveau de ton code comme ca, ca marche
class A
{
function B()
{
return " OK ";
}
function C()
{
return $this->B();
}
}
$a = new A();
echo $a->C();
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 19 juin 2010, 16:11
par jeorcal
merci pour ton aide ça marche nickel
pour le time zone je dois regarder
... faudra que je te payes une mousse

Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 13:40
par jeorcal
j'ai jamais eu de prob comme ça en dot.net .... putain de php !
même genre de code et ça marche pas
zone = $this->shipping_zone(); me plante le truc
class vm_ps_shipping_price {
function shipping_zone($id){
$q = "SELECT zone_id FROM jos_vm_country WHERE country_3_code = (SELECT country FROM jos_vm_user_info WHERE user_id = $id );";
$db = new ps_DB;
$db->query($q);
$db->next_record();
return $db->f("zone_id");
}
function shipping_price(){
$zone = $this->shipping_zone();
$q = "SELECT shipping_rate_value FROM jos_vm_shipping_rate WHERE shipping_rate_carrier_id =" . $zone;
$db = new ps_DB;
$db->query($q);
$db->next_record();
return $db->f("shipping_rate_value");
}
}
la function shipping_zone retourne la bonne valeur
merci encore
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 13:52
par stealth35
shipping_zone(); attend un paramètre tu lui en donne pas

Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 13:58
par jeorcal
non c'est pour l'exemple j'ai modifie et a un seul endroit , en fait c'est
Code : Tout sélectionner
function shipping_zone(){
$user =& JFactory::getUser();
$id = $user->id;
....
}
y a aucun paramètre
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 13:59
par jeorcal
voila le code exact
class vm_ps_shipping_price {
function shipping_zone(){
$user =& JFactory::getUser();
$id = $user->id;
//fr = 1 DOMTOM =2, Europe = 3, monde =4
$zone = null;
$q = "SELECT zone_id FROM jos_vm_country WHERE country_3_code = (SELECT country FROM jos_vm_user_info WHERE user_id = $id );";
$db = new ps_DB;
$db->query($q);
$db->next_record();
$zone = $db->f("zone_id");
// on traite les dom tom comme l'europe
if ($zone ==3){$zone=2;}
return $zone ;
}
function shipping_price(){
$shprice = null;
$quantity = $_SESSION['vm-amount'];
if ($quantity > 2){
$quantity = $quantity - 1;
}
$quantextra = $quantity -1 ;
$zone = $this->shipping_zone();
$q = "SELECT zone_cost,zone_description FROM jos_vm_zone_shipping WHERE zone_tax_rate =" . $zone;
$db = new ps_DB;
$db->query($q);
$db->next_record();
$ratev = $db->f("zone_cost");
$ratevextra = $db->f("zone_description");
if ($quantity == 1){
$shprice = $ratev ;
}
else{
$shprice = $ratev + ( $quantextra * $ratevextra) ;
}
return $shprice;
}
}
ça plante dans la deuxieme function à
$zone = $this->shipping_zone();
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 14:01
par stealth35
non c'est pour l'exemple j'ai modifie et a un seul endroit , en fait c'est
Code : Tout sélectionner
function shipping_zone(){
$user =& JFactory::getUser();
$id = $user->id;
....
}
y a aucun paramètre
quelle est l'erreur d'affiché ? ton niveau d'erreur est bien au maximum ?
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 14:06
par jeorcal
si je rajoute tes function dans la class
function B()
{
return " OK ";
}
function C()
{
return $this->B();
}
je plante à
$C = ps_shipping_price::C() ;
un appel
me.machin plante pas en dot.net
ça vient pas de mes functions
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 14:08
par stealth35
oui mais quelle est l'erreur d'affiché ?
on mélange pas le statique et le non statique
Re: recuperer valeur d'unefunction dans un autre dans une class
Posté : 12 juil. 2010, 14:12
par jeorcal
y a pas d'erreur affichée j'ai une page blanche
si je déclare tout public c'est pareil
merci encore pour ton temps