Definition at line 14 of file PhpScanner.php.
◆ __construct()
Initialize dependencies.
- Parameters
-
Log | $log | |
TypeProcessor | null | $typeProcessor | |
Definition at line 32 of file PhpScanner.php.
35 $this->typeProcessor = $typeProcessor
◆ _fetchClasses()
_fetchClasses |
( |
|
$namespace, |
|
|
|
$tokenIterator, |
|
|
|
$count, |
|
|
|
$tokens |
|
) |
| |
|
protected |
- Parameters
-
$namespace | string |
$tokenIterator | int |
$count | int |
$tokens | array |
- Returns
- array
Definition at line 214 of file PhpScanner.php.
217 for ($tokenOffset = $tokenIterator + 1; $tokenOffset <
$count; ++$tokenOffset) {
218 if (
$tokens[$tokenOffset] ===
'{') {
219 $classes[] = $namespace .
"\\" .
$tokens[$tokenIterator + 2][1];
◆ _fetchFactories()
_fetchFactories |
( |
|
$reflectionClass, |
|
|
|
$file |
|
) |
| |
|
protected |
Fetch factories from class constructor
- Parameters
-
\ReflectionClass | $reflectionClass | |
string | $file | |
- Returns
- string[]
Definition at line 106 of file PhpScanner.php.
108 $factorySuffix =
'\\' . ucfirst(FactoryGenerator::ENTITY_TYPE);
109 $absentFactories = $this->_findMissingClasses(
113 ucfirst(FactoryGenerator::ENTITY_TYPE)
115 foreach ($absentFactories as $key => $absentFactory) {
116 if (substr($absentFactory, -strlen($factorySuffix)) == $factorySuffix) {
117 $entityName = rtrim(substr($absentFactory, 0, -strlen($factorySuffix)),
'\\');
119 Log::CONFIGURATION_ERROR,
121 'Invalid Factory declaration for class ' . $entityName .
' in file ' . $file
123 unset($absentFactories[$key]);
126 return $absentFactories;
◆ _fetchMissingExtensionAttributesClasses()
_fetchMissingExtensionAttributesClasses |
( |
|
$reflectionClass, |
|
|
|
$file |
|
) |
| |
|
protected |
Find missing extension attributes related classes, interfaces and factories.
- Parameters
-
\ReflectionClass | $reflectionClass | |
string | $file | |
- Returns
- string[]
Definition at line 136 of file PhpScanner.php.
138 $missingExtensionInterfaces = [];
139 $methodName =
'getExtensionAttributes';
140 $entityType = ucfirst(\
Magento\Framework\Api\Code\Generator\ExtensionAttributesInterfaceGenerator::ENTITY_TYPE);
142 $returnType = $this->typeProcessor->getGetterReturnType(
143 (
new \
Zend\Code\Reflection\ClassReflection(
$reflectionClass->getName()))->getMethod($methodName)
145 $missingClassName = $returnType[
'type'];
146 if ($this->shouldGenerateClass($missingClassName,
$entityType, $file)) {
147 $missingExtensionInterfaces[] = $missingClassName;
150 $missingExtensionClasses = [];
151 $missingExtensionFactories = [];
152 foreach ($missingExtensionInterfaces as $missingExtensionInterface) {
153 $extension = rtrim(substr($missingExtensionInterface, 0, -strlen(
'Interface')),
'\\');
159 $missingExtensionFactories[] = $extensionFactory;
162 return array_merge($missingExtensionInterfaces, $missingExtensionClasses, $missingExtensionFactories);
◆ _fetchNamespace()
_fetchNamespace |
( |
|
$tokenIterator, |
|
|
|
$count, |
|
|
|
$tokens |
|
) |
| |
|
protected |
- Parameters
-
$tokenIterator | int |
$count | int |
$tokens | array |
- Returns
- string
Definition at line 194 of file PhpScanner.php.
197 for ($tokenOffset = $tokenIterator + 1; $tokenOffset <
$count; ++$tokenOffset) {
198 if (
$tokens[$tokenOffset][0] === T_STRING) {
199 $namespace .=
"\\" .
$tokens[$tokenOffset][1];
elseif(isset( $params[ 'redirect_parent']))
◆ _getDeclaredClasses()
_getDeclaredClasses |
( |
|
$file | ) |
|
|
protected |
Get classes and interfaces declared in the file
- Parameters
-
- Returns
- array
Definition at line 231 of file PhpScanner.php.
238 for ($tokenIterator = 0; $tokenIterator <
$count; $tokenIterator++) {
239 if (
$tokens[$tokenIterator][0] == T_NAMESPACE) {
243 if ((
$tokens[$tokenIterator][0] == T_CLASS ||
$tokens[$tokenIterator][0] == T_INTERFACE)
244 &&
$tokens[$tokenIterator - 1][0] != T_DOUBLE_COLON
249 return array_unique($classes);
_fetchClasses($namespace, $tokenIterator, $count, $tokens)
_fetchNamespace($tokenIterator, $count, $tokens)
◆ collectEntities()
collectEntities |
( |
array |
$files | ) |
|
Get array of class names
- Parameters
-
- Returns
- array
Implements ScannerInterface.
Definition at line 171 of file PhpScanner.php.
174 foreach (
$files as $file) {
_fetchFactories($reflectionClass, $file)
_getDeclaredClasses($file)
foreach($appDirs as $dir) $files
_fetchMissingExtensionAttributesClasses($reflectionClass, $file)
◆ getSourceClassName()
getSourceClassName |
( |
|
$missingClassName, |
|
|
|
$entityType |
|
) |
| |
|
protected |
Identify source class name for the provided class.
- Parameters
-
string | $missingClassName | |
string | $entityType | |
- Returns
- string
Process special cases for extension class and extension interface
Process special case for extension factories
Definition at line 75 of file PhpScanner.php.
77 $sourceClassName = rtrim(substr($missingClassName, 0, -strlen(
$entityType)),
'\\');
79 if (
$entityType == ExtensionAttributesInterfaceGenerator::ENTITY_TYPE
80 ||
$entityType == ExtensionAttributesGenerator::ENTITY_TYPE
83 return $sourceClassName .
'Interface';
85 $extensionAttributesSuffix = ucfirst(ExtensionAttributesGenerator::ENTITY_TYPE);
86 if (substr($sourceClassName, -strlen($extensionAttributesSuffix)) == $extensionAttributesSuffix) {
88 $extensionAttributesClass = substr(
91 -strlen(ExtensionAttributesGenerator::ENTITY_TYPE)
93 $sourceClassName = $extensionAttributesClass .
'Interface';
96 return $sourceClassName;
elseif(isset( $params[ 'redirect_parent']))
◆ $_log
The documentation for this class was generated from the following file:
- vendor/magento/magento2-base/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php