/** * Perform validation surrounding source and result classes and entity type * * @param string $resultEntityType * @param string $sourceClassName * @param string $resultClass * @return string|bool */ protected function shouldSkipGeneration($resultEntityType, $sourceClassName, $resultClass) { if (!$resultEntityType || !$sourceClassName) { return self::GENERATION_ERROR; } else { if ($this->definedClasses->isClassLoadableFromDisc($resultClass)) { $generatedFileName = $this->_ioObject->generateResultFileName($resultClass); /** * 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. */ if ($this->_ioObject->fileExists($generatedFileName) && !$this->definedClasses->isClassLoadableFromMemory($resultClass)) { $this->_ioObject->includeFile($generatedFileName); } return self::GENERATION_SKIP; } else { if (!isset($this->_generatedEntities[$resultEntityType])) { throw new \InvalidArgumentException('Unknown generation entity.'); } } } return false; }
/** * Include file only if the class is not already defined in memory * * @param string $fileName * @param string $className * @return void */ public function tryToIncludeFile($fileName, $className) { if (!$this->definedClasses->isClassLoadableFromMemory($className)) { include $fileName; } }