|
|
|
| Пример:
class MyFirstClass {
static $oTest = '123456';
function test() {
echo self::$oTest;
}
}
class MyLastClass extends MyFirstClass {
static $oTest = '654321';
}
echo MyLastClass::test();
|
Хочу что бы был результат: 654321. Как добиться? | |
|
|
|
|
|
|
|
для: p.pavluxa
(15.02.2014 в 01:12)
| | а вы к чему обращаетесь то?
function test() {
echo self::$oTest;
echo MyLastClass::$oTest;
}
Статическая переменная существует только в локальной области видимости функции, но не теряет своего значения, когда выполнение программы выходит из этой области видимости
и к не статичным методам обращайтесь через объект | |
|
|
|
|
|
|
|
для: moonfox
(15.02.2014 в 03:49)
| | Вот мне нужно сделать так что бы метод test() распечатывал содержимое переменной статической $oTest того класса который наследует основной, а если вызов без наследования то статически заданный по умолчанию. | |
|
|
|
|
|
|
|
для: p.pavluxa
(15.02.2014 в 01:12)
| | вот так измените класс
<?php
class MyFirstClass {
static $oTest = '123456';
function test() {
echo static::$oTest;
}
}
class MyLastClass extends MyFirstClass {
static $oTest = '654321';
}
|
почитайте вот это http://php.net/manual/ru/language.oop5.late-static-bindings.php
вообще не советую сильно увлекаться статическими членами/методами, это противоречит принципам ооп | |
|
|
|
|
|
|
|
для: psychomc
(15.02.2014 в 13:55)
| | Супер! Спасибо | |
|
|
|