Как можно динамически создать методы для класса на PHP4?

moscower

Новичок
Как можно динамически создать методы для класса на PHP4?

PHP:
class Class1 {
    var $var1;
    var $var2;
    var $var3;
    function Class1 () {
         // class constructor
   }
   function getVar1() {
        return $this->var1;
   }
   function getVar2() {
        return $this->var2;
   }
   function getVar3() {
        return $this->var3;
   }

   function setVar1($var1) {
        $this->var1=$var1;
   }
   function setVar2($var2) {
        $this->var2=$var2;
   }
   function setVar3($var3) {
        $this->var3=$var3;
   }
   
   
}
все хорошо, если параметров достаточно мало. Но методы очень похожи друг на друга, и хотелось бы создать их где-нибудь в конструкторе динамически. Возможно ли?
 

svetasmirnova

маленький монстрик
>и хотелось бы создать их где-нибудь в конструкторе динамически
неправильные у вас желания ;) Но вообще-то можно: см. агргатные методы и lambda-style функции
 

moscower

Новичок
Света, почитал об агрегатных методах, вроде Вы их имели в виду (http://php.rinet.ru/manual/ru/ref.objaggregation.php) , но там можно добавить только методы какого-то другого класса к объекту. А вот к классу динамически методы добавлять видимо никак не получится при их помощи, по крайней мере я не нашел.
 

atv

Новичок
Для твоей задачи подойдёт перегрузка свойств объекта:
http://www.php.net/manual/ru/ref.overload.php
 

svetasmirnova

маленький монстрик
>А вот к классу динамически методы добавлять видимо никак не получится
Грубо говоря: потому что динамических классов не бывает: "динамический" класс - это объект :)
 

Panchous

Павел
PHP:
class Class1 { 
    var $vars = array(); 
    function Class1 () { 
         // class constructor 
   }
   function getVar($varname) { 
        return $this->vars[$varname]; 
   } 

   function setVar($varname, $value) { 
        $this->vars[$varname] = $value; 
   } 

}
 
Сверху