Page 1 sur 2
appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 12:35
par jcpans
Bonjour
d'apres la doc
http://fr2.php.net/manual/fr/language.oop5.static.php
L'appel non-statique à des méthodes statiques génère une alerte de degré E_STRICT.
mais moi ça me genere rien
Code : Tout sélectionner
<?php
error_reporting( E_ALL | E_STRICT );
class B
{
static $B =555;
function __construct()
{
}
static function toto()
{
echo self::$B;
}
}
$var = new B;
$var->toto();
J'ai mal compris ?
Merci d'avance.
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 13:15
par jcpans
J'ai compris, ça s'applique que si on fait l'appel dans la même classe.
Code : Tout sélectionner
<?php
error_reporting( E_ALL | E_STRICT );
class B
{
static $B =555;
function __construct()
{
}
function toto()
{
echo $this->B;
}
}
$var = new B;
$var->toto();
[/résolu]
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 13:15
par stealth35
tu fais aucun appelle non static a une méthode static

Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 13:19
par stealth35
un appelle non static a une méthode static
reviendrais faire
class B
{
public static function test()
{
echo 'hello';
}
}
$test = new B();
$test->test();
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 13:33
par jcpans
je reprend pas résolu désolé
ça s'applique que sur les propriétés, dans ou en dehors une classe, désolé pour la fausse info.
Code : Tout sélectionner
error_reporting( E_ALL | E_STRICT );
class Foo
{
public static $my_static = 'foo';
static public function staticValue() {
return self::$my_static;
}
}
print $foo->my_static ";
Donc le même probleme avec la doc
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 13:38
par stealth35
moi ca me génère
Strict Standards: Accessing static property Foo::$my_static as non static in D:\www\test\index.php on line 12
Notice: Undefined property: Foo::$my_static in D:\www\test\index.php on line 12
comme la doc l'indique
class Foo
{
public static $my_static = 'foo';
static public function staticValue() {
return self::$my_static;
}
}
$foo = new Foo();
print $foo->my_static;
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:16
par jcpans
Oui donc comme ton code l'idique ça s'applique que sur les propriétés
pas de probleme dans ce code
Code : Tout sélectionner
class Foo
{
public $my_static = 'foo';
static public function staticValue() {
return $this->my_static;
}
}
$foo = new Foo();
echo $foo->my_static;
alors que la doc dit bien méthode
L'appel non-statique à des méthodes statiques génère une alerte de degré E_STRICT.
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:20
par stealth35
my_static n'est pas static la
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:25
par jcpans
méthodes est une propriété pas une méthode.
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:28
par stealth35
pour générer ton erreur fraudais appelé staticValue et pas my_static
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:29
par jcpans
je m'excuse (admin supprimez le message d'avant svp)
my_static est une propriété pas une méthode.
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:32
par jcpans
oups ok je rectifis le code
Code : Tout sélectionner
class Foo
{
public $my_static = 'foo';
static public function staticValue() {
return 'toto';
}
}
$foo = new Foo();
echo $foo->staticValue();
pas de probleme.
Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:33
par stealth35
je vois ou est le probleme, regarde
en francais
L'appel non-statique à des méthodes statiques génère une alerte de degré E_STRICT.
en anglais
Calling non-static methods statically generates an E_STRICT level warning.
erreur de traduction

Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:34
par jcpans
avec
J'ai la tete qui tourne

Re: appel non-statique à des méthodes statiques
Posté : 27 mai 2010, 15:36
par stealth35
la traduction serai
L'appel statiques à des méthodes non-statiques génère une alerte de degré E_STRICT.