Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
Generator Class Reference
Inheritance diagram for Generator:
Generator

Public Member Functions

 __construct (Io $ioObject=null, array $generatedEntities=[], DefinedClasses $definedClasses=null, LoggerInterface $logger=null)
 
 getGeneratedEntities ()
 
 setGeneratedEntities ($generatedEntities)
 
 setObjectManager (ObjectManagerInterface $objectManager)
 
 getObjectManager ()
 

Data Fields

const GENERATION_SUCCESS = 'success'
 
const GENERATION_ERROR = 'error'
 
const GENERATION_SKIP = 'skip'
 

Protected Member Functions

 createGeneratorInstance ($generatorClass, $entityName, $className)
 
 tryToLoadSourceClass ($className, $generator)
 
 shouldSkipGeneration ($resultEntityType, $sourceClassName, $resultClass)
 

Protected Attributes

 $_ioObject
 
 $_generatedEntities
 
 $definedClasses
 
 $objectManager
 

Detailed Description

Definition at line 16 of file Generator.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( Io  $ioObject = null,
array  $generatedEntities = [],
DefinedClasses  $definedClasses = null,
LoggerInterface  $logger = null 
)
Parameters
Generator\Io$ioObject
array$generatedEntities
DefinedClasses$definedClasses
LoggerInterface | null$logger

Definition at line 57 of file Generator.php.

62  {
63  $this->_ioObject = $ioObject ?: new Io(new File());
64  $this->definedClasses = $definedClasses ?: new DefinedClasses();
65  $this->_generatedEntities = $generatedEntities;
66  $this->logger = $logger;
67  }

Member Function Documentation

◆ createGeneratorInstance()

createGeneratorInstance (   $generatorClass,
  $entityName,
  $className 
)
protected

Create entity generator

Parameters
string$generatorClass
string$entityName
string$className
Returns
EntityAbstract

Definition at line 165 of file Generator.php.

166  {
167  return $this->getObjectManager()->create(
168  $generatorClass,
169  ['sourceClassName' => $entityName, 'resultClassName' => $className, 'ioObject' => $this->_ioObject]
170  );
171  }
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31

◆ getGeneratedEntities()

getGeneratedEntities ( )

Get generated entities

Returns
array

Definition at line 74 of file Generator.php.

◆ getObjectManager()

getObjectManager ( )

Get object manager instance.

Returns
ObjectManagerInterface

Definition at line 190 of file Generator.php.

191  {
192  if (!($this->objectManager instanceof ObjectManagerInterface)) {
193  throw new \LogicException(
194  "Object manager was expected to be set using setObjectManger() "
195  . "before getObjectManager() invocation."
196  );
197  }
198  return $this->objectManager;
199  }

◆ setGeneratedEntities()

setGeneratedEntities (   $generatedEntities)

Set entity-to-generator map

Parameters
array$generatedEntities
Returns
$this

Definition at line 85 of file Generator.php.

86  {
87  $this->_generatedEntities = $generatedEntities;
88  return $this;
89  }

◆ setObjectManager()

setObjectManager ( ObjectManagerInterface  $objectManager)

Set object manager instance.

Parameters
ObjectManagerInterface$objectManager
Returns
$this

Definition at line 179 of file Generator.php.

180  {
181  $this->objectManager = $objectManager;
182  return $this;
183  }

◆ shouldSkipGeneration()

shouldSkipGeneration (   $resultEntityType,
  $sourceClassName,
  $resultClass 
)
protected

Perform validation surrounding source and result classes and entity type

Parameters
string$resultEntityType
string$sourceClassName
string$resultClass
Returns
string|bool

Must handle two edge cases: a competing process has generated the class and written it to disc already, or the class exists in committed code, despite matching pattern to be generated.

Definition at line 231 of file Generator.php.

232  {
233  if (!$resultEntityType || !$sourceClassName) {
234  return self::GENERATION_ERROR;
235  } elseif ($this->definedClasses->isClassLoadableFromDisk($resultClass)) {
236  $generatedFileName = $this->_ioObject->generateResultFileName($resultClass);
241  if ($this->_ioObject->fileExists($generatedFileName)
242  && !$this->definedClasses->isClassLoadableFromMemory($resultClass)
243  ) {
244  $this->_ioObject->includeFile($generatedFileName);
245  }
246  return self::GENERATION_SKIP;
247  } elseif (!isset($this->_generatedEntities[$resultEntityType])) {
248  throw new \InvalidArgumentException('Unknown generation entity.');
249  }
250  return false;
251  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17

◆ tryToLoadSourceClass()

tryToLoadSourceClass (   $className,
  $generator 
)
protected

Try to load/generate source class to check if it is valid or not.

Parameters
string$className
EntityAbstract$generator
Returns
void
Exceptions

Definition at line 209 of file Generator.php.

210  {
211  $sourceClassName = $generator->getSourceClassName();
212  if (!$this->definedClasses->isClassLoadable($sourceClassName)) {
213  if ($this->generateClass($sourceClassName) !== self::GENERATION_SUCCESS) {
214  $phrase = new Phrase(
215  'Source class "%1" for "%2" generation does not exist.',
216  [$sourceClassName, $className]
217  );
218  throw new \RuntimeException($phrase->__toString());
219  }
220  }
221  }
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31

Field Documentation

◆ $_generatedEntities

$_generatedEntities
protected

Definition at line 32 of file Generator.php.

◆ $_ioObject

$_ioObject
protected

Definition at line 27 of file Generator.php.

◆ $definedClasses

$definedClasses
protected

Definition at line 37 of file Generator.php.

◆ $objectManager

$objectManager
protected

Definition at line 42 of file Generator.php.

◆ GENERATION_ERROR

const GENERATION_ERROR = 'error'

Definition at line 20 of file Generator.php.

◆ GENERATION_SKIP

const GENERATION_SKIP = 'skip'

Definition at line 22 of file Generator.php.

◆ GENERATION_SUCCESS

const GENERATION_SUCCESS = 'success'

Definition at line 18 of file Generator.php.


The documentation for this class was generated from the following file: