Здравствуйте!
PHP4. Есть некоторый php-класс c двумя функциями-членами:class CClass {
var x = NULL;
var y = NULL;
function incX () {
$this->x = $this->x + 1;
}function incY () {
$this->y = $this->y + 1;
}
}Как создать такую функцию-член, которая принимала бы входным параметром имя члена этого класса и выполняла действия над ним? Тоесть так:
...
function inc ($member) {
//$member - строка с названием переменной (в моем случае либо "x"
//либо "y"
$this->$member = $this->$member + 1;
}...
mojete delat takfunction incremet(&$member){
$member++;
}
>PHP4. Есть некоторый php-класс c двумя функциями-членами:
>
>class CClass {
> var x = NULL;
> var y = NULL;
>
> function incX () {
> $this->x = $this->x + 1;
> }
>
> function incY () {
> $this->y = $this->y + 1;
> }
>}
>
>Как создать такую функцию-член, которая принимала бы входным параметром имя члена этого
>класса и выполняла действия над ним? Тоесть так:
>
>...
>
>function inc ($member) {
>//$member - строка с названием переменной (в моем случае либо "x"
>//либо "y"
> $this->$member = $this->$member + 1;
>}
>
>...В четвертом PHP фокус с такой функцией inc($member) прокатывает, насчет пятого не знаю. В конце концов, можно придумать что-то вроде:
function inc ($member) {
switch ($member) {
"x": $this->incX(); break;
"y": $this->incY(); break;
...
default: die("Ой! Не знаю, кто такой $member!");
}
}Можно еще вызывать методы так, но это извращение:
call_user_method("inc$member", $object);
Но если задуматься, то такой подход противоречит объектно-ориентированной идеологии. Пользователь объекта не должен задумываться, какие переменные объявлены внутри класса. Он рулит объектом в целом с помощью методов.