OVH Cloud OVH Cloud

variable static

3 réponses
Avatar
Jean Pierre Daviau
Bonjour à tous,

Comment puis-je réaliser ce problème trivial?

class Foo {
static $va = 0;

function count() {
global $va;
return $va++;
}
}
$o = new Foo();
echo $o->$va; donne 1
echo $o->$va; dnne 2

Merci de votre attention
--

X trême newbe
.......
masm32
windows Xp
asus p4 s533/333/133
Intel(R) Celeron (R) CPU 2.00 GHz

3 réponses

Avatar
Jean Pierre Daviau
class Foo {
static $va = 0;

function count() {
global $va;
return $va++;
}
}
$o = new Foo();
echo $o->count();

Ça fonctionne
Avatar
bruno modulix
Jean Pierre Daviau wrote:
Bonjour à tous,

Comment puis-je réaliser ce problème trivial?

class Foo {
static $va = 0;

function count() {
global $va;
return $va++;
}
}
$o = new Foo();
echo $o->$va; donne 1
echo $o->$va; dnne 2


class Foo(object):
_va = 0
def _get_va(self):
Foo._va +=1
return Foo._va
va = property(fget=_get_va)

o = Foo()
o.va # 1
o.va # 2

... Ha ? Tu voulais ça en PHP ? Bin, là je crois que c'est pas possible,
sauf à passer par un getter explicite... BTW, en php4, faute d'avoir des
variables de classe, on peut passer par une globale 'masquée'.

<?php
class Foo
{
function Foo() {
if (!isset($GLOBALS['FOO_VA'])) {
$GLOBALS['FOO_VA'] = 0;
}
}

function va() {
return ++$GLOBALS['FOO_VA'];
}
}

$o =& new Foo();
echo $o->va(); echo "<br>"; echo $o->va();
?>

Ou alors j'ai pas bien compris la question ?

--
bruno desthuilliers
ruby -e "print ''.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"

Avatar
Paul Delannoy
Jean Pierre Daviau a écrit:
Bonjour à tous,

Comment puis-je réaliser ce problème trivial?


QUEL problème ???


class Foo {
static $va = 0;

function count() {
global $va;
return $va++;
}
}
$o = new Foo();
echo $o->$va; donne 1
echo $o->$va; dnne 2

Merci de votre attention