这个要求只是为了简化开发人员和漂亮的代码。我正在构建一个模板系统,我真的只想在所有函数中使用一个对象变量。这是一些代码:
Librarian.php:
$class = "slideshow";
$function = "basic";
$args = array(...);
$librarian = $this; // I WOULD LIKE THIS TO BE PRESENT IN CALLED FUNCTION
...
return call_user_func($class.'::'.$function, $args);
...
Slideshow.php:
public static function basic($args) {
echo $librarian; // "Librarian Object"
}
谢谢! 马特穆勒
答案 0 :(得分:2)
您可以使用以下功能:
public static function basic($args) {
echo librarian();
}
// some other file
function librarian()
{
global $librarian;
// does some stuff
}
这样您就不必不断地为每个函数添加全局语句。
这是你的意思吗?
答案 1 :(得分:1)
我猜你可以使用单身,但这有点属于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
}
你想要的是不可能的,至少我没有看到任何简单或优雅的方式。