Полагаю, вы могли бы использовать синглтон, но это бы несколько попало в категорию global
.
class Librarian
{
static $instance = null;
function __toString()
{
return 'Librarian Object';
}
function foo()
{
return 'bar';
}
function singleton()
{
if (is_null(self::$instance))
{
self::$instance = new Librarian();
}
return self::$instance;
}
}
function basic()
{
echo Librarian::singleton(); // Librarian Object
echo Librarian::singleton()->foo(); // bar
}
Вы также можете иметь синглтон вне класса:
class Librarian
{
function __toString()
{
return 'Librarian Object';
}
function foo()
{
return 'bar';
}
}
function singleton()
{
static $instance = null;
if (is_null($instance))
{
$instance = new Librarian();
}
return $instance;
}
function basic()
{
echo singleton(); // Librarian Object
echo singleton()->foo(); // bar
}
То, что вы хотите, невозможно, по крайней мере, я не вижу простого или элегантного способа сделать это.