Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP изменение статическое переменной наследуемого класса
 
 автор: p.pavluxa   (15.02.2014 в 01:12)   письмо автору
 
 

Пример:

class MyFirstClass {
 static $oTest = '123456';

 function test() {
  echo self::$oTest;
 }
}
class MyLastClass extends MyFirstClass {
 static $oTest = '654321';
}

echo MyLastClass::test();


Хочу что бы был результат: 654321. Как добиться?

  Ответить  
 
 автор: moonfox   (15.02.2014 в 03:49)   письмо автору
 
   для: p.pavluxa   (15.02.2014 в 01:12)
 

а вы к чему обращаетесь то?
function test() {
echo self::$oTest;
echo MyLastClass::$oTest;
}
Статическая переменная существует только в локальной области видимости функции, но не теряет своего значения, когда выполнение программы выходит из этой области видимости



и к не статичным методам обращайтесь через объект

  Ответить  
 
 автор: p.pavluxa   (15.02.2014 в 10:20)   письмо автору
 
   для: moonfox   (15.02.2014 в 03:49)
 

Вот мне нужно сделать так что бы метод test() распечатывал содержимое переменной статической $oTest того класса который наследует основной, а если вызов без наследования то статически заданный по умолчанию.

  Ответить  
 
 автор: psychomc   (15.02.2014 в 13:55)   письмо автору
 
   для: 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
вообще не советую сильно увлекаться статическими членами/методами, это противоречит принципам ооп

  Ответить  
 
 автор: p.pavluxa   (15.02.2014 в 15:43)   письмо автору
 
   для: psychomc   (15.02.2014 в 13:55)
 

Супер! Спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования