ПРЕАМБУЛА: Я использую F3 Framework (www.fatfreeframework.com).php "pure" OOP: как классы дизайна?
Скажем, у меня есть абстрактный класс «контроллер»
<?php
abstract class Controller
{
/* F3 */
protected $f3;
/* DATABASE SECTION */
protected $db_name;
protected $db_host;
protected $db_username;
protected $db_password;
function __construct()
{
$f3 = Base::instance();
$this->f3 = $f3;
}
protected function get_db_name()
{
return $this->db_name;
}
protected function get_db_host()
{
return $this->db_host;
}
protected function get_db_username()
{
return $this->db_username;
}
protected function get_db_password()
{
return $this->db_password;
}
protected function set_db_name($db_name)
{
$this->db_name = $db_name;
}
protected function set_db_host($db_host)
{
$this->db_host = $db_host;
}
protected function set_db_username($db_username)
{
$this->db_username = $db_username;
}
protected function set_db_password($db_password)
{
$this->db_password = $db_password;
}
} // /class Controller
И FrontendController Класс:
<?php
class FrontendController extends Controller
{
public function get_view()
{
$this->set_db_host('localhost');
}
}
Его работа этого управления веб-интерфейс (HTML, печать результаты из базы данных, и т.д. и т.п. и т.д.).
После некоторого дня мне нужен класс BackendController для управления новостями сайта (например).
1) Мне нужно переписать соединения db (например)? Или я переведу их в конструкцию Controller?
2) Действительно, с точки 1, я не думаю, чтобы добавить их в __construct подкласса, но конечно это переопределить __construct завтрашнего дня абстрактного класса
3) Я хочу создать ToolboxController класса. Предположим, что область действия будет выполнять некоторую задачу (например, «извлечь первые буквы X из текста», «форматировать данные в соответствии с пользовательскими настройками»), все фрагменты кода, которые я буду/могу использовать повторно в другой части приложения.
В этом случае мне нужно будет реорганизовать весь сайт меняющийся от:
Controller <= FrontendController
Controller <= BackendController
в
Controller <= ToolboxController <= FrontendController
Controller <= ToolboxController <= BackendController
< где = средняя "продолжается"?
Похоже, что это очень глупый вопрос и простой, но я бы понял логический процесс добавления новых функций на родившийся небольшой веб-сайт на большой портал.
На самом деле это не место для «наилучшего проектирования этой прикладной/кодовой базы». Вы можете сделать лучше на программистов, но сначала ознакомьтесь с правилами и положениями. Я не говорю, что все в порядке, просто может быть, и здесь это не очень удобно. Немного непонятно, о чем вы спрашиваете, поскольку вы задаете справедливый бит. – James
Ваш контроллер не знает о каких-либо настройках базы данных. Это для вашей соответствующей абстракции базы данных, которая находится на уровне * модели *. Так что избавитесь от каких-либо материалов базы данных от вашего контроллера, он там не принадлежит. – Jimbo
@jimbo ok ... Спасибо. А для второго вопроса? Когда проект «поднимается», и мне нужно добавить другой контроллер? – sineverba