在开发具有超级对象的面向对象的 HMVC 时,在应用程序过程中的某个时刻,它需要使用命名空间。在这里,命名空间将充当“版本化”不同代码的方法,这些代码可以以相同的方式访问。在下面的缩小示例中,Foo
如果qux
我在 versionA
或B
. 我知道如果我使用self::
而不是$this
问题会消失,但是,我希望避免这种情况。目前,我收到以下 PHP 错误:
Fatal error: Using $this when not in object context
所以我的问题是,我如何$this
在这种特定情况下使用?
namespace
{
$gamma = new \Gamma();
$gamma->execute('A', 'Foo', 'qux');
// ...
class Alpha
{
// ...
}
class Beta extends Alpha
{
public function foo($input)
{
echo $this->bar($input);
}
public function bar($input)
{
return $input;
}
}
class Gamma extends Beta
{
public function execute($space, $class, $method)
{
call_user_func_array(array($space . '\\' . $class, $method), array());
}
}
}
namespace A
{
class Foo extends \Gamma
{
public function qux()
{
$this->foo('I like turtles');
}
}
}
namespace B
{
class Foo extends \Gamma
{
public function qux()
{
$this->foo('I like strawberries');
}
}
}
预期的输出是:
"I like turtles"
非常感谢任何建议,答案,指导。:3