appel non-statique à des méthodes statiques

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 12:35

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.

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 13:15

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]

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 13:15

tu fais aucun appelle non static a une méthode static :roll:

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 13:19

un appelle non static a une méthode static
reviendrais faire
class B
{
    public static function test()
    {
        echo 'hello';
    }
}
	
$test = new B();
$test->test();

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 13:33

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

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 13:38

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;  

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 15:16

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.

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 15:20

my_static n'est pas static la

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 15:25

méthodes est une propriété pas une méthode.

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 15:28

pour générer ton erreur fraudais appelé staticValue et pas my_static

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 15:29

je m'excuse (admin supprimez le message d'avant svp)
my_static est une propriété pas une méthode.

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 15:32

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.

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 15:33

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

jcpans
Invité n'ayant pas de compte PHPfrance

27 mai 2010, 15:34

avec

Code : Tout sélectionner

error_reporting( E_ALL | E_STRICT );
J'ai la tete qui tourne 8-|

ViPHP
ViPHP | 5462 Messages

27 mai 2010, 15:36

la traduction serai
L'appel statiques à des méthodes non-statiques génère une alerte de degré E_STRICT.