Когда дело доходит до объектно-ориентированного программирования, обычно класс выполняет определенную задачу, такую как удержание пользовательской информации или управление вводом / выводом.
Когда у вас есть, скажем, 1 объект, который используется для управления выводом, вы можете установить метод в этом объекте для управления типом вывода, или как каждый конкретный контент должен обрабатываться, но это будет означать, что объекты являются единственными цель была нарушена, поскольку теперь она не только отправляет контент, но и манипулирует контентом в зависимости от его типа.
Способ, которым мы используем для преодоления этого, состоит в группировке набора задач в группу классов / объектов, например:
abstract class Output
{
public $content_type = 'text/plain';
public function _send(){}
}
Выходной класс, очевидно, будет иметь гораздо больше методов, но только методов, связанных с выводом контента, таких как заголовки и т. Д., А не с манипулированием контентом, тогда у вас будет что-то вроде:
class HTMLOutput extends Output
{
public $content_type = 'text/html';
}
и для манипулирования контентом:
class CSSOutput extends Output
{
public $content_type = 'text/css';
public _send()
{
if($_SERVER['APP']['Settings']['CSSCompress'] == '1')
{
$this->_compress_css();
}
parent::_send();
}
private function _compress_css()
{
$this->content = ; //Some compression lib
}
}
Это основные пункты архитектуры, которые я соблюдаю при создании и организации множества сгруппированных классов / объектов.