Потоковый двоичный файл от MySQL для загрузки PHP

Я пытаюсь сохранить вещи очень простыми каждый раз, когда я могу, так обычно что-то вроде этого работает на меня:

Myapp. Домен - Все зависящие от домена классы совместно используют это пространство имен

Myapp. Данные - Тонкий слой, который абстрагирует базу данных от домена.

Myapp. Приложение - Весь "код поддержки", вход, совместно использовал служебный код, сервисные потребители и т.д.

Myapp. Сеть - веб-UI

Так классы будет, например:

  • Myapp. Домен. Продажи. Порядок
  • Myapp. Домен. Продажи. Клиент
  • Myapp. Домен. Прайс-лист
  • Myapp. Данные. OrderManager
  • Myapp. Данные. CustomerManager
  • Myapp. Приложение. Utils
  • Myapp. Приложение. CacheTools

И т.д.

идея, которую я пытаюсь иметь в виду, поскольку я продвигаюсь, состоит в том, что "доменное" пространство имен - то, что получает фактическую логику приложения. Таким образом, что идет существует то, что можно говорить со "специалистами по проблемной области" (Чуваки, которые будут использовать приложение) о. Если я кодирую что-то из-за чего-то, что они упомянули, это должно быть в доменном пространстве имен, и каждый раз, когда я кодирую что-то, что они не упомянули (как вход, прослеживая ошибки и т.д.), это не должно быть в доменном пространстве имен.

из-за этого я также осторожен о создании иерархий слишком сложного объекта. Идеально несколько упрощенный рисунок модели предметной области должен быть интуитивно понятным некодерами.

С этой целью я обычно не начинаю путем размышления о шаблонах в большом количестве деталей. Я пытаюсь смоделировать домен, столь простой, как мне может сойти с рук, после просто стандартного объектно-ориентированного руководства по проектированию. Какие потребности быть объектом? Как они связаны?

DDD в моем уме об обработке сложного программного обеспечения, но если Ваше программное обеспечение не самостоятельно очень сложно для начала с Вас, мог бы легко закончиться в ситуации, где способ DDD сделать вещи добавляет сложность, а не удаляет ее.

, После того как у Вас есть определенный уровень сложности в Вашей модели, которую Вы начнете видеть, как определенные вещи должны быть организованы, и затем Вы будете знать, какие шаблоны использовать, какие классы являются агрегатами и т.д.

В моем примере, Myapp. Домен. Продажи. Порядок был бы совокупным корнем в том смысле, что, когда он инстанцируется, он будет, вероятно, содержать другие объекты, такие как клиентский объект и набор строк порядка, и Вы только получили бы доступ к строкам порядка для того особого порядка через объект порядка.

Однако для хранения вещей простыми, у меня не было бы "основного" объекта, который только содержит все остальное и не имеет никакой другой цели, таким образом, класс порядка будет самостоятельно иметь значения и свойства, которые полезны в приложении.

, Таким образом, я сошлюсь на вещи как:

Myapp. Домен. Продажи. Порядок. TotalCost

Myapp. Домен. Продажи. Порядок. OrderDate

Myapp. Домен. Продажи. Порядок. Клиент. PreferredInvoiceMethod

Myapp.Domain.Sales.Order.Customer.Address.Zip

и т.д.

5
задан Ian 13 October 2009 в 21:41
поделиться

1 ответ

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);
12
ответ дан 18 December 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: