eZ\Publish\Core\IO\IOService::createBinaryFile PHP Метод

createBinaryFile() публичный Метод

public createBinaryFile ( BinaryFileCreateStruct $binaryFileCreateStruct )
$binaryFileCreateStruct eZ\Publish\Core\IO\Values\BinaryFileCreateStruct
    public function createBinaryFile(BinaryFileCreateStruct $binaryFileCreateStruct)
    {
        if (empty($binaryFileCreateStruct->id) || !is_string($binaryFileCreateStruct->id)) {
            throw new InvalidArgumentValue('id', $binaryFileCreateStruct->id, 'BinaryFileCreateStruct');
        }
        if (!is_int($binaryFileCreateStruct->size) || $binaryFileCreateStruct->size < 0) {
            throw new InvalidArgumentValue('size', $binaryFileCreateStruct->size, 'BinaryFileCreateStruct');
        }
        if (!is_resource($binaryFileCreateStruct->inputStream)) {
            throw new InvalidArgumentValue('inputStream', 'property is not a file resource', 'BinaryFileCreateStruct');
        }
        if (!isset($binaryFileCreateStruct->mimeType)) {
            $buffer = fread($binaryFileCreateStruct->inputStream, $binaryFileCreateStruct->size);
            $binaryFileCreateStruct->mimeType = $this->mimeTypeDetector->getFromBuffer($buffer);
            unset($buffer);
        }
        $spiBinaryCreateStruct = $this->buildSPIBinaryFileCreateStructObject($binaryFileCreateStruct);
        try {
            $this->binarydataHandler->create($spiBinaryCreateStruct);
        } catch (Exception $e) {
            throw new IOException('An error occured creating binarydata', $e);
        }
        $spiBinaryFile = $this->metadataHandler->create($spiBinaryCreateStruct);
        if (!isset($spiBinaryFile->uri)) {
            $spiBinaryFile->uri = $this->binarydataHandler->getUri($spiBinaryFile->id);
        }
        return $this->buildDomainBinaryFileObject($spiBinaryFile);
    }

Usage Example

Пример #1
0
 /**
  * @covers \eZ\Publish\Core\IO\IOService::createBinaryFile
  * @covers \eZ\Publish\Core\IO\IOService::buildSPIBinaryFileCreateStructObject
  * @covers \eZ\Publish\Core\IO\IOService::buildDomainBinaryFileObject
  * @depends testNewBinaryCreateStructFromLocalFile
  */
 public function testCreateBinaryFile(BinaryFileCreateStruct $createStruct)
 {
     $createStruct->id = "my/path.php";
     $id = $this->getPrefixedUri($createStruct->id);
     $spiBinaryFile = new SPIBinaryFile();
     $spiBinaryFile->id = $id;
     $spiBinaryFile->uri = $id;
     $spiBinaryFile->size = filesize(__FILE__);
     $spiBinaryFile->mimeType = 'text/x-php';
     $this->binarydataHandlerMock->expects($this->once())->method('create')->with($this->callback(function ($subject) use($id) {
         if (!$subject instanceof \eZ\Publish\SPI\IO\BinaryFileCreateStruct) {
             return false;
         }
         return $subject->id == $id;
     }));
     $this->metadataHandlerMock->expects($this->once())->method('create')->with($this->callback($this->getSPIBinaryFileCreateStructCallback($id)))->will($this->returnValue($spiBinaryFile));
     $binaryFile = $this->IOService->createBinaryFile($createStruct);
     self::assertInstanceOf('eZ\\Publish\\Core\\IO\\Values\\BinaryFile', $binaryFile);
     self::assertEquals($createStruct->id, $binaryFile->id);
     self::assertEquals($createStruct->size, $binaryFile->size);
     return $binaryFile;
 }