SergXP
Новичок
Всем привет!
Вроде бы банальная задача, а не могу заставить работать)
Имеем примерно такую структуру классов:
никаких проверок и прочего, чисто пример.
Естественно, при попытке вызвать getAdapter() выпадает весь список методов
из двух классов одновременно.
мне нужно чтобы выпали только 2 функции, которые действительно относятся к этому адаптеру.
Можно же как-то заставить правильно работать автокомплит в подобном примере?
И хотелось бы применить грамотное решение, скорее всего тут паттерны могут придти на помощь)
Спасибо!)
Вроде бы банальная задача, а не могу заставить работать)
Имеем примерно такую структуру классов:
PHP:
interface IAdapter
{
public function getAdapter();
}
abstract class AAdapter
{
/**
* @return MySQL|PostgreSQL
*/
public function getAdapter()
{
return $this;
}
}
class MySQL extends AAdapter implements IAdapter
{
/**
* @return string
*/
public function thisMysql()
{
return "This is Mysql";
}
}
class PostgreSQL extends AAdapter implements IAdapter
{
/**
* @return string
*/
public function thisPostgres()
{
return "This is PostgreSQL";
}
}
class DB {
/**
* @var null|MySQL
*/
public $adapters = null;
/**
* @param $name
* @param IAdapter $params
* @return $this
*/
public function addAdapter($name,IAdapter $class)
{
$this->adapters[$name] = $class;
return $this;
}
/**
* @return mixed|MySQL|PostgreSQL
*/
public function getAdapter($name)
{
return $this->adapters[$name];
}
}
Естественно, при попытке вызвать getAdapter() выпадает весь список методов
из двух классов одновременно.
PHP:
$db = new DB();
$db->addAdapter("db1",new MySQL());
$db->getAdapter("db1")-> // выпадет сразу getAdapter(), thisMysql(), thisPostgres()
Можно же как-то заставить правильно работать автокомплит в подобном примере?
И хотелось бы применить грамотное решение, скорее всего тут паттерны могут придти на помощь)
Спасибо!)