Мне кажется, стоит попробовать так:
class A
{
function doOne()
{
}
}
class B
{
function doOne()
{
}
}
То есть функция одна, но для разных классов. Потом делаешь:
$a=new A;
$b=new B;
function SIR($obj)
{
if(session_is_registered("valid_user"))
{
$obj->doOne();
}
else
{
echo"идите регистрируйтесь";
}
}
И вызываешь свою функцию SIR для разных объектов:
SIR($a);
SIR($b);
Вот и все дела. Мне кажется, должно раюотать.
-------
Гы, а вот сишные конструкции типа void (*mysig(int sig, void(*hndlr)(int)))(int) в пхп невозможны, если я не ошибаюсь

.