Question edited to better reflect my needs.
Aşağıdaki örneği ele alalım:
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
}
}
Nasıl I statik (not using parent::
veya Base_Text sınıfı çağırmadan fix the Base_Text_Is::CammelCase()
yöntemi Base_Text::
)?
Ben durumlarda bu tür ile geldi tek çözüm bu gibi bir tek işlevi oluşturmak için:
function Base()
{
static $instance = null;
if (is_null($instance) === true)
{
$instance = new Base();
}
return $instance;
}
Ve bu Base_Text_Is::CammelCase()
yöntemini değiştirin:
return ($string === Base()->Text->CammelCase($string));
Ve sırayla yerine yapmanın Base sınıfının iki nesne örnekleri, yaratmaktan kaçınmak için:
$base = new Base();
$base->Text->Is->CammelCase('MethodOverloading'); // true
Ben sadece bunu:
Base()->Text->Is->CammelCase('MethodOverloading'); // true
Is this a good practice? Are there any other solutions?