|
|
|
| Народ, хелп!
Вопрос к тем, кто имеет большой опыт в ООП PHP.
Есть книжный пример того, как можно динамически ДАВАТЬ ОПРЕДЕЛЕНИЕ функции, например:
<?php
function test($a)
{
if(1==$a)
{
function wow()
{
echo 'Definition1';
return;
}
}
else
{
function wow()
{
echo 'Definition2';
return;
}
}
return;
}
test(0);
wow();
?>
Все прекрасно работает
Если же работаем с объектами, то
<?php
class test
{
function __construct()
{
return;
}
function __destruct()
{
return;
}
function init($flag)
{
if(1==$flag)
{
function content()
{
echo 'Definition1';
return;
}
}
else
{
function content()
{
echo 'Definition2';
return;
}
}
return;
}
function run()
{
$this->content();
return;
}
}
$wow = new test();
$wow->init(0);
$wow->run();
?>
То не работает, потому как функция CONTENT() частью класса не считается.
К ней можно обратиться только если сделать так:
function run()
{
content();
return;
}
Но мне нужно чтобы функция CONTENT() была функцией-членом класса.
Как быть? | |
|
|
|
|
|
|
|
для: qquery
(21.03.2007 в 13:50)
| | как вариант - не парить мозги себе и сделать просто 3 функции класса и точно так же спокойно вызывать ф-цию content как члена класса
content ()
{
if (условие)
return $this->content1();
else
return $this->content2();
}
function content1()
...
function content2()
...
|
| |
|
|
|
|
|
|
|
для: ZuArt
(21.03.2007 в 14:03)
| | Это не решение проблемы.
Это выход, временный но... не то...
Если работает без ООП, то должна быть возможность работать нормальное динамическое определение функции и с ООП. Да и не хочу я тратить память на десятки функций в памяти если мне реально нужна только одна. | |
|
|
|
|
|
|
|
для: qquery
(21.03.2007 в 13:50)
| | Естественно, что функция content() не будет членом класса.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: qquery
(21.03.2007 в 13:50)
| | Если вам требуется вызывать из объекта метод с произвольным именем перегрузите специальный метод класса __call() - первый параметр имя динамического метода, второй - массив его параметров. | |
|
|
|
|
|
|
|
для: cheops
(21.03.2007 в 15:05)
| | Спасибо | |
|
|
|