public static proxyDirectoryNotWritable ( string $proxyDirectory ) : self | ||
$proxyDirectory | string | |
Результат | self |
/** * 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); }