Doctrine\Common\Proxy\Exception\UnexpectedValueException::proxyDirectoryNotWritable PHP Method

proxyDirectoryNotWritable() public static method

public static proxyDirectoryNotWritable ( string $proxyDirectory ) : self
$proxyDirectory string
return self
    public static function proxyDirectoryNotWritable($proxyDirectory)
    {
        return new self(sprintf('Your proxy directory "%s" must be writable', $proxyDirectory));
    }

Usage Example

コード例 #1
0
 /**
  * Generates a proxy class file.
  *
  * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class    Metadata for the original class.
  * @param string|bool                                        $fileName Filename (full path) for the generated class. If none is given, eval() is used.
  *
  * @throws UnexpectedValueException
  */
 public function generateProxyClass(ClassMetadata $class, $fileName = false)
 {
     preg_match_all('(<([a-zA-Z]+)>)', $this->proxyClassTemplate, $placeholderMatches);
     $placeholderMatches = array_combine($placeholderMatches[0], $placeholderMatches[1]);
     $placeholders = array();
     foreach ($placeholderMatches as $placeholder => $name) {
         $placeholders[$placeholder] = isset($this->placeholders[$name]) ? $this->placeholders[$name] : array($this, 'generate' . $name);
     }
     foreach ($placeholders as &$placeholder) {
         if (is_callable($placeholder)) {
             $placeholder = call_user_func($placeholder, $class);
         }
     }
     $proxyCode = strtr($this->proxyClassTemplate, $placeholders);
     if (!$fileName) {
         $proxyClassName = $this->generateNamespace($class) . '\\' . $this->generateProxyShortClassName($class);
         if (!class_exists($proxyClassName)) {
             eval(substr($proxyCode, 5));
         }
         return;
     }
     $parentDirectory = dirname($fileName);
     if (!is_dir($parentDirectory) && false === @mkdir($parentDirectory, 0775, true)) {
         throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
     }
     if (!is_writable($parentDirectory)) {
         throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
     }
     $tmpFileName = $fileName . '.' . uniqid('', true);
     file_put_contents($tmpFileName, $proxyCode);
     chmod($tmpFileName, 0664);
     rename($tmpFileName, $fileName);
 }