Phan\Analysis\ParentConstructorCalledAnalyzer::analyzeParentConstructorCalled PHP Метод

analyzeParentConstructorCalled() публичный статический Метод

Check to see if the given Clazz is a duplicate
public static analyzeParentConstructorCalled ( CodeBase $code_base, Clazz $clazz ) : null
$code_base Phan\CodeBase
$clazz Phan\Language\Element\Clazz
Результат null
    public static function analyzeParentConstructorCalled(CodeBase $code_base, Clazz $clazz)
    {
        // Only look at classes configured to require a call
        // to its parent constructor
        if (!in_array($clazz->getName(), Config::get()->parent_constructor_required)) {
            return;
        }
        // Don't worry about internal classes
        if ($clazz->isInternal()) {
            return;
        }
        // Don't worry if there's no parent class
        if (!$clazz->hasParentType()) {
            return;
        }
        if (!$code_base->hasClassWithFQSEN($clazz->getParentClassFQSEN())) {
            // This is an error, but its caught elsewhere. We'll
            // just roll through looking for other errors
            return;
        }
        $parent_clazz = $code_base->getClassByFQSEN($clazz->getParentClassFQSEN());
        if (!$parent_clazz->isAbstract() && !$clazz->getIsParentConstructorCalled()) {
            Issue::maybeEmit($code_base, $clazz->getContext(), Issue::TypeParentConstructorCalled, $clazz->getFileRef()->getLineNumberStart(), (string) $clazz->getFQSEN(), (string) $parent_clazz->getFQSEN());
        }
    }

Usage Example

Пример #1
0
 /**
  * Take a pass over all classes verifying various
  * states.
  *
  * @return null
  */
 public static function analyzeClasses(CodeBase $code_base)
 {
     $class_count = count($code_base->getClassMap());
     // Take a pass to import all details from ancestors
     $i = 0;
     foreach ($code_base->getClassMap() as $fqsen => $class) {
         CLI::progress('classes', ++$i / $class_count);
         if ($class->isInternal()) {
             continue;
         }
         // Make sure the parent classes exist
         ParentClassExistsAnalyzer::analyzeParentClassExists($code_base, $class);
         DuplicateClassAnalyzer::analyzeDuplicateClass($code_base, $class);
         ParentConstructorCalledAnalyzer::analyzeParentConstructorCalled($code_base, $class);
         PropertyTypesAnalyzer::analyzePropertyTypes($code_base, $class);
     }
 }
All Usage Examples Of Phan\Analysis\ParentConstructorCalledAnalyzer::analyzeParentConstructorCalled
ParentConstructorCalledAnalyzer