编辑问题以更好地反映我的需求.
请看以下示例:
class Base
{
public $Text = null;
public function __construct()
{
$this->Text = new Base_Text();
}
}
class Base_Text extends Base
{
public $Is = null;
public function __construct()
{
$this->Is = new Base_Text_Is();
}
public function CammelCase($string)
{
return trim(str_replace(' ', '', ucwords($string)));
}
}
class Base_Text_Is extends Base_Text
{
public function CammelCase($string)
{
return ($string === $this->CammelCase($string)); // doesn't work
}
}
如何在不静态调用Base_Text类的情况下修复Base_Text_Is :: CammelCase()方法(不使用parent ::或Base_Text::)?
我为这种情况提出的唯一解决方案是创建一个像这样的单例函数:
function Base()
{
static $instance = null;
if (is_null($instance) === true)
{
$instance = new Base();
}
return $instance;
}
并将Base_Text_Is :: CammelCase()方法更改为:
return ($string === Base()->Text->CammelCase($string));
并且为了避免创建Base类的两个对象实例,而不是:
$base = new Base();
$base->Text->Is->CammelCase('MethodOverloading'); // true
我只是做:
Base()->Text->Is->CammelCase('MethodOverloading'); // true
这是一个好习惯吗?还有其他解决方案吗?