Isys
Новичок
Инициализация глобального массива _FILES
Всем Добрый день!
У меня возникла следующая проблема:
есть метод вставки в базу данных с определенными параметрами
Все параметры данного метода передаются из формы POST запросом. Параметры $document, $documentSize, $documentFormat, $documentTmpName берутся из глобального массива _FILES. Затем метод проверяется на правильность работы путем использования Юнит-тестов и передачи в метод заранее известных параметров (БЕЗ ФОРМЫ):
!!!Вопрос!!!
Файл для тестовой загрузги существует.
Как сделать так чтобы функция move_uploaded_file оперировала с тестовым файлом (при вызове insert из testInsert) как-будто бы он загружался при помощи HTTP POST? Говоря иными словами - инициализировать переменные $document, $documentSize, $documentTmpName значениями $_FILES (см. знаки вопроса) как-будто они прибыли из формы.
Всем Добрый день!
У меня возникла следующая проблема:
есть метод вставки в базу данных с определенными параметрами
PHP:
public function insert($author, $title, $publishers, $publishDate, $pagesNumber, $isbn, $image, $loadImage, $summary, $document, $documentSize, $documentFormat, $documentTmpName)
{
$sql = "INSERT INTO " . $this->_tablePrefix . "\"Book\" (author, title, publishers, \"publishDate\", \"pagesNumber\", isbn, summary, document, \"documentSize\", \"documentFormat\") " .
"VALUES ('$author','$title', '$publishers', '$publishDate', '$pagesNumber', '$isbn', '$summary', '$document', '$documentSize', '$documentFormat')";
try {
if (!move_uploaded_file($documentTmpName, 'Book/documents/' . $document)) {
throw new Book_Business_BookDAOException(self::ERROR_LOAD_DOCUMENT);
}
$this->_db->beginTransaction();
$this->_db->exec($sql);
if ($loadImage && $image) {
$bookId = $this->_db->lastInsertId("\"bookIdSeq\"");
if (!move_uploaded_file($image, 'Book/images/' . $bookId)) {
throw new Book_Business_BookDAOException(self::ERROR_LOAD_IMAGE);
}
$sql = "UPDATE " . $this->_tablePrefix . "\"Book\" " .
"SET image = '1' " .
"WHERE \"bookId\" = " . $bookId;
$this->_db->exec($sql);
}
$this->_db->commit();
}
catch (PDOException $e) {
$this->_db->rollBack();
throw new Book_Business_BookDAOException($e->getMessage());
}
}
PHP:
public function testInsert()
{
$author = 'testAuthor';
$title = 'testTitle';
$publishers = 'testPublishers';
$publishDate = date('m-d-Y');
$pagesNumber = 300;
$isbn = '4-5879';
$image = '0';
$loadImage = null;
$summary = 'testSummary';
$document = ????????????????;
$documentSize = ?????????????????????;
$documentFormat = 'txt';
$documentTmpName = ??????????????????????;
try {
$bookDAO = new Book_Business_BookDAO();
$bookDAO->insert($author, $title, $publishers, $publishDate, $pagesNumber, $isbn, $image, $loadImage, $summary, $document, $documentSize, $documentFormat, $documentTmpName);
// --------------- Далее ненужности ----------------
Файл для тестовой загрузги существует.
Как сделать так чтобы функция move_uploaded_file оперировала с тестовым файлом (при вызове insert из testInsert) как-будто бы он загружался при помощи HTTP POST? Говоря иными словами - инициализировать переменные $document, $documentSize, $documentTmpName значениями $_FILES (см. знаки вопроса) как-будто они прибыли из формы.