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

Форум PHP

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

 

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

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

тема: Наследование
 
 автор: Суррогат   (14.12.2010 в 16:38)   письмо автору
 
 

class A {
    protected static  function get(){
             // возможно ли здесь получить значение B::$property   ?
      }
}
class B extends A {
    public static $property = 'value';
        

    public static function get() {
        parent::get();
    }
}

  Ответить  
 
 автор: psychomc   (14.12.2010 в 16:47)   письмо автору
 
   для: Суррогат   (14.12.2010 в 16:38)
 

так разве не работает:

echo B :: property

?

  Ответить  
 
 автор: Суррогат   (14.12.2010 в 16:53)   письмо автору
 
   для: psychomc   (14.12.2010 в 16:47)
 

ща по другому сформулируем :)

class A {
    protected static  function get(){
             // возможно ли здесь получить:  СhildСlass::$property   ?
      }
}

class B extends A {
    public static $property = 'value';
        
    public static function get() {
        parent::get();
    }


class С extends A {
    public static $property = 'value';
        
    public static function get() {
        parent::get();
    }
}

  Ответить  
 
 автор: ride   (14.12.2010 в 17:35)   письмо автору
 
   для: Суррогат   (14.12.2010 в 16:53)
 


class A {
    protected static  function get($class){
         echo $class::$property;
    }
}

class B extends A {
    public static $property = 'value1';

    public static function get() {
        parent::get(__CLASS__);
    }
}

class C extends A {
    public static $property = 'value2';

    public static function get() {
        parent::get(__CLASS__);
    }
}

C::get();

  Ответить  
 
 автор: Суррогат   (14.12.2010 в 18:25)   письмо автору
 
   для: ride   (14.12.2010 в 17:35)
 

если E_STRICT
выдает ошибку
Strict standards: Declaration of B::get() should be compatible with that of A::get()

есть конечно выход
 
class A {
    protected static  function get($class){
         echo $class::$property;
    }
}

class B extends A {
    public static $property = 'value1';

    public static function get($prop = false) {
        parent::get(__CLASS__);
    }
}

class C extends A {
    public static $property = 'value2';

    public static function get($prop = false) {
        parent::get(__CLASS__);
    }
}

C::get(); 

но мне кажется это не совсем правильно....

  Ответить  
 
 автор: ride   (14.12.2010 в 21:14)   письмо автору
 
   для: Суррогат   (14.12.2010 в 18:25)
 

я забыл переименовать метод get в родителе
он ведь у вас все равно защищенный.

class A {
    protected static  function _get($class){
         echo $class::$property;
    }
}

class B extends A {
    public static $property = 'value1';

    public static function get() {
        parent::_get(__CLASS__);
    }
}

class C extends A {
    public static $property = 'value2';

    public static function get() {
        parent::_get(__CLASS__);
    }
}

C::get();  

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

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