10 use Magento\Framework\Code\Generator\Io;
14 use Psr\Log\LoggerInterface;
59 array $generatedEntities = [],
61 LoggerInterface $logger =
null 63 $this->_ioObject = $ioObject ?:
new Io(
new File());
65 $this->_generatedEntities = $generatedEntities;
66 $this->logger = $logger;
87 $this->_generatedEntities = $generatedEntities;
101 $resultEntityType =
null;
102 $sourceClassName =
null;
103 foreach ($this->_generatedEntities as
$entityType => $generatorClass) {
108 $sourceClassName = rtrim(
109 substr(
$className, 0, -1 * strlen($entitySuffix)),
120 $generatorClass = $this->_generatedEntities[$resultEntityType];
128 $errors[] =
'Class ' .
$className .
' generation error: The requested class did not generate properly, ' 129 .
'because the \'generated\' directory permission is read-only. ' 130 .
'If --- after running the \'bin/magento setup:di:compile\' CLI command when the \'generated\' ' 131 .
'directory permission is set to write --- the requested class did not generate properly, then ' 132 .
'you must add the generated class object to the signature of the related construct method, only.';
134 $this->getLogger()->critical(
$message);
135 throw new \RuntimeException(
$message);
137 if (!$this->definedClasses->isClassLoadableFromMemory(
$className)) {
138 $this->_ioObject->includeFile($file);
149 private function getLogger()
151 if (!$this->logger) {
154 return $this->logger;
169 [
'sourceClassName' => $entityName,
'resultClassName' =>
$className,
'ioObject' => $this->_ioObject]
193 throw new \LogicException(
194 "Object manager was expected to be set using setObjectManger() " 195 .
"before getObjectManager() invocation." 211 $sourceClassName =
$generator->getSourceClassName();
212 if (!$this->definedClasses->isClassLoadable($sourceClassName)) {
215 'Source class "%1" for "%2" generation does not exist.',
218 throw new \RuntimeException($phrase->__toString());
233 if (!$resultEntityType || !$sourceClassName) {
235 }
elseif ($this->definedClasses->isClassLoadableFromDisk($resultClass)) {
236 $generatedFileName = $this->_ioObject->generateResultFileName($resultClass);
241 if ($this->_ioObject->fileExists($generatedFileName)
242 && !$this->definedClasses->isClassLoadableFromMemory($resultClass)
244 $this->_ioObject->includeFile($generatedFileName);
247 }
elseif (!isset($this->_generatedEntities[$resultEntityType])) {
248 throw new \InvalidArgumentException(
'Unknown generation entity.');
createGeneratorInstance($generatorClass, $entityName, $className)
elseif(isset( $params[ 'redirect_parent']))
__construct(Io $ioObject=null, array $generatedEntities=[], DefinedClasses $definedClasses=null, LoggerInterface $logger=null)
setObjectManager(ObjectManagerInterface $objectManager)
shouldSkipGeneration($resultEntityType, $sourceClassName, $resultClass)
setGeneratedEntities($generatedEntities)
tryToLoadSourceClass($className, $generator)