Как вызывать переопределенные классы внутри базового класса? Ситуация такая: есть два базовых классаloader = new Loader(); } }<?php namespace AppBase; class Loader {} И есть наследуемые классы:<?php namespace AppExample; class App extends \AppBase\App {}
В данной ситуации можно воспользоваться поздним статическим связыванием для создания экземпляра нужного класса Loader внутри класса App. Для этого можно использовать статический метод в базовом классе App, который будет создавать экземпляр нужного класса Loader.
Пример кода:
namespace AppBase; class App { protected $loader; public function __construct() { $this->loader = static::createLoader(); } protected static function createLoader() { return new Loader(); } } namespace AppExample; class App extends \AppBase\App { protected static function createLoader() { return new Loader(); } } namespace AppBase; class Loader {} namespace AppExample; class Loader extends \AppBase\Loader {}
Таким образом, при создании экземпляра класса AppExample\App будет вызываться переопределенный метод createLoader, который будет создавать экземпляр класса Loader из пространства имен AppExample.
В данной ситуации можно воспользоваться поздним статическим связыванием для создания экземпляра нужного класса Loader внутри класса App. Для этого можно использовать статический метод в базовом классе App, который будет создавать экземпляр нужного класса Loader.
Пример кода:
namespace AppBase;class App
{
protected $loader;
public function __construct()
{
$this->loader = static::createLoader();
}
protected static function createLoader()
{
return new Loader();
}
}
namespace AppExample;
class App extends \AppBase\App
{
protected static function createLoader()
{
return new Loader();
}
}
namespace AppBase;
class Loader {}
namespace AppExample;
class Loader extends \AppBase\Loader {}
Таким образом, при создании экземпляра класса AppExample\App будет вызываться переопределенный метод createLoader, который будет создавать экземпляр класса Loader из пространства имен AppExample.