Я пытаюсь сохранить вещи очень простыми каждый раз, когда я могу, так обычно что-то вроде этого работает на меня:
Myapp. Домен - Все зависящие от домена классы совместно используют это пространство имен
Myapp. Данные - Тонкий слой, который абстрагирует базу данных от домена.
Myapp. Приложение - Весь "код поддержки", вход, совместно использовал служебный код, сервисные потребители и т.д.
Myapp. Сеть - веб-UI
Так классы будет, например:
И т.д.
идея, которую я пытаюсь иметь в виду, поскольку я продвигаюсь, состоит в том, что "доменное" пространство имен - то, что получает фактическую логику приложения. Таким образом, что идет существует то, что можно говорить со "специалистами по проблемной области" (Чуваки, которые будут использовать приложение) о. Если я кодирую что-то из-за чего-то, что они упомянули, это должно быть в доменном пространстве имен, и каждый раз, когда я кодирую что-то, что они не упомянули (как вход, прослеживая ошибки и т.д.), это не должно быть в доменном пространстве имен.
из-за этого я также осторожен о создании иерархий слишком сложного объекта. Идеально несколько упрощенный рисунок модели предметной области должен быть интуитивно понятным некодерами.
С этой целью я обычно не начинаю путем размышления о шаблонах в большом количестве деталей. Я пытаюсь смоделировать домен, столь простой, как мне может сойти с рук, после просто стандартного объектно-ориентированного руководства по проектированию. Какие потребности быть объектом? Как они связаны?
DDD в моем уме об обработке сложного программного обеспечения, но если Ваше программное обеспечение не самостоятельно очень сложно для начала с Вас, мог бы легко закончиться в ситуации, где способ DDD сделать вещи добавляет сложность, а не удаляет ее.
, После того как у Вас есть определенный уровень сложности в Вашей модели, которую Вы начнете видеть, как определенные вещи должны быть организованы, и затем Вы будете знать, какие шаблоны использовать, какие классы являются агрегатами и т.д.
В моем примере, Myapp. Домен. Продажи. Порядок был бы совокупным корнем в том смысле, что, когда он инстанцируется, он будет, вероятно, содержать другие объекты, такие как клиентский объект и набор строк порядка, и Вы только получили бы доступ к строкам порядка для того особого порядка через объект порядка.
Однако для хранения вещей простыми, у меня не было бы "основного" объекта, который только содержит все остальное и не имеет никакой другой цели, таким образом, класс порядка будет самостоятельно иметь значения и свойства, которые полезны в приложении.
, Таким образом, я сошлюсь на вещи как:
Myapp. Домен. Продажи. Порядок. TotalCost
Myapp. Домен. Продажи. Порядок. OrderDate
Myapp. Домен. Продажи. Порядок. Клиент. PreferredInvoiceMethod
Myapp.Domain.Sales.Order.Customer.Address.Zip
и т.д.
function getfile($blockid)
{
global $msa_db;
$sql = "select filename, filedata from blocks where blockid = '$blockid'";
$query = mysql_query($sql, $msa_db);
$result['filename'] = mysql_result($query,0,0);
$result['filedata'] = mysql_result($query,0,1);
return $result;
}
function download($fileinfo)
{
$file = base64_decode($fileinfo['filedata']);
header("Cache-Control: no-cache private");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.$fileinfo['filename']);
header("Content-Type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. strlen($file));
echo $file;
exit;
}
$fileinfo = getfile($blockid);
download($fileinfo);