YiiRequirementChecker::check PHP Method

check() public method

This method can be invoked several times checking different requirement sets. Use YiiRequirementChecker::getResult or YiiRequirementChecker::render to get the results.
public check ( array | string $requirements )
$requirements array | string requirements to be checked. If an array, it is treated as the set of requirements; If a string, it is treated as the path of the file, which contains the requirements;
    function check($requirements)
    {
        if (is_string($requirements)) {
            $requirements = (require $requirements);
        }
        if (!is_array($requirements)) {
            $this->usageError('Requirements must be an array, "' . gettype($requirements) . '" has been given!');
        }
        if (!isset($this->result) || !is_array($this->result)) {
            $this->result = array('summary' => array('total' => 0, 'errors' => 0, 'warnings' => 0), 'requirements' => array());
        }
        foreach ($requirements as $key => $rawRequirement) {
            $requirement = $this->normalizeRequirement($rawRequirement, $key);
            $this->result['summary']['total']++;
            if (!$requirement['condition']) {
                if ($requirement['mandatory']) {
                    $requirement['error'] = true;
                    $requirement['warning'] = true;
                    $this->result['summary']['errors']++;
                } else {
                    $requirement['error'] = false;
                    $requirement['warning'] = true;
                    $this->result['summary']['warnings']++;
                }
            } else {
                $requirement['error'] = false;
                $requirement['warning'] = false;
            }
            $this->result['requirements'][] = $requirement;
        }
        return $this;
    }

Usage Example

 /**
  * @depends testCheck
  */
 public function testCheckChained()
 {
     $requirementsChecker = new YiiRequirementChecker();
     $requirements1 = [['name' => 'Requirement 1', 'mandatory' => true, 'condition' => true, 'by' => 'Requirement 1', 'memo' => 'Requirement 1']];
     $requirements2 = [['name' => 'Requirement 2', 'mandatory' => true, 'condition' => true, 'by' => 'Requirement 2', 'memo' => 'Requirement 2']];
     $checkResult = $requirementsChecker->check($requirements1)->check($requirements2)->getResult();
     $mergedRequirements = array_merge($requirements1, $requirements2);
     $this->assertEquals(count($mergedRequirements), $checkResult['summary']['total'], 'Wrong total checks count!');
     foreach ($mergedRequirements as $key => $mergedRequirement) {
         $this->assertEquals($mergedRequirement['name'], $checkResult['requirements'][$key]['name'], 'Wrong requirements list!');
     }
 }