8 use Zend\Code\Generator\ValueGenerator;
20 private $_errors = [];
27 private $_sourceClassName;
34 private $_resultClassName;
51 private $definedClasses;
61 $sourceClassName =
null,
62 $resultClassName =
null,
68 $this->_ioObject = $ioObject;
72 if ($classGenerator) {
73 $this->_classGenerator = $classGenerator;
77 if ($definedClasses) {
78 $this->definedClasses = $definedClasses;
84 if ($resultClassName) {
86 }
elseif ($this->_sourceClassName) {
106 $this->
_addError(
'Can\'t generate source code.');
109 }
catch (\Exception $e) {
122 return $this->_errors;
132 return $this->_sourceClassName;
165 return $this->_resultClassName;
176 return $modelClassName . ucfirst(static::ENTITY_TYPE);
188 'name' =>
'_objectManager',
189 'visibility' =>
'protected',
191 'shortDescription' =>
'Object Manager instance',
192 'tags' => [[
'name' =>
'var',
'description' =>
'\\' . \Magento\Framework\ObjectManagerInterface::class]],
247 $resultDir = $this->_ioObject->getResultFileDirectory($resultClassName);
249 if (!$this->definedClasses->isClassLoadable($sourceClassName)) {
250 $this->
_addError(
'Source class ' . $sourceClassName .
' doesn\'t exist.');
256 !$this->_ioObject->makeResultFileDirectory($resultClassName)
257 && !$this->_ioObject->fileExists($resultDir)
259 $this->
_addError(
'Can\'t create directory ' . $resultDir .
'.');
302 $value =
new ValueGenerator(
null, ValueGenerator::TYPE_NULL);
312 private function extractParameterType(
313 \ReflectionParameter $parameter
317 if ($parameter->hasType()) {
318 if ($parameter->isArray()) {
320 }
elseif ($parameter->getClass()) {
322 $parameter->getClass()->getName()
324 }
elseif ($parameter->isCallable()) {
325 $typeName =
'callable';
327 $typeName = $parameter->getType()->getName();
330 if ($parameter->allowsNull()) {
331 $typeName =
'?' .$typeName;
343 private function extractParameterDefaultValue(
344 \ReflectionParameter $parameter
348 if ($parameter->isOptional() && $parameter->isDefaultValueAvailable()) {
349 $valueType = ValueGenerator::TYPE_AUTO;
350 $defaultValue = $parameter->getDefaultValue();
351 if ($defaultValue ===
null) {
352 $valueType = ValueGenerator::TYPE_NULL;
354 $value =
new ValueGenerator($defaultValue, $valueType);
369 'name' => $parameter->getName(),
370 'passedByReference' => $parameter->isPassedByReference(),
371 'variadic' => $parameter->isVariadic()
373 if (
$type = $this->extractParameterType($parameter)) {
374 $parameterInfo[
'type'] =
$type;
376 if ($default = $this->extractParameterDefaultValue($parameter)) {
377 $parameterInfo[
'defaultValue'] = $default;
380 return $parameterInfo;
390 public function init($sourceClassName, $resultClassName)
392 $this->_sourceClassName = $sourceClassName;
393 $this->_resultClassName = $resultClassName;
_getFullyQualifiedClassName($className)
elseif(isset( $params[ 'redirect_parent']))
__construct( $sourceClassName=null, $resultClassName=null, Io $ioObject=null, \Magento\Framework\Code\Generator\CodeGeneratorInterface $classGenerator=null, DefinedClasses $definedClasses=null)
getSourceClassNameWithoutNamespace()
_fixCodeStyle($sourceCode)
_getDefaultResultClassName($modelClassName)
_getMethodParameterInfo(\ReflectionParameter $parameter)
_getDefaultConstructorDefinition()
init($sourceClassName, $resultClassName)