ExpressiveInstaller\OptionalPackages::processAnswer PHP Метод

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

This process
public static processAnswer ( Composer\IO\IOInterface $io, array $question, string | integer $answer, string $copyFilesKey ) : boolean
$io Composer\IO\IOInterface
$question array
$answer string | integer
$copyFilesKey string
Результат boolean
    public static function processAnswer(IOInterface $io, array $question, $answer, $copyFilesKey)
    {
        if (is_numeric($answer) && isset($question['options'][$answer])) {
            // Add packages to install
            if (isset($question['options'][$answer]['packages'])) {
                foreach ($question['options'][$answer]['packages'] as $packageName) {
                    self::addPackage($io, $packageName, self::$config['packages'][$packageName]);
                }
            }
            // Copy files
            if (isset($question['options'][$answer][$copyFilesKey])) {
                foreach ($question['options'][$answer][$copyFilesKey] as $source => $target) {
                    self::copyFile($io, self::$projectRoot, $source, $target);
                }
            }
            return true;
        }
        if ($question['custom-package'] === true && preg_match(self::PACKAGE_REGEX, $answer, $match)) {
            self::addPackage($io, $match['name'], $match['version']);
            if (isset($question['custom-package-warning'])) {
                $io->write(sprintf("  <warning>%s</warning>", $question['custom-package-warning']));
            }
            return true;
        }
        return false;
    }

Usage Example

 /**
  * @dataProvider templateRendererProvider
  */
 public function testTemplateRenderer($containerOption, $routerOption, $templateRendererOption, $copyFilesKey, $expectedResponseStatusCode, $expectedTemplateRenderer)
 {
     $io = $this->prophesize('Composer\\IO\\IOInterface');
     $config = $this->getConfig();
     // Install container
     $containerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['container'], $containerOption, $copyFilesKey);
     $this->assertTrue($containerResult);
     // Install router
     $routerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['router'], $routerOption, $copyFilesKey);
     $this->assertTrue($routerResult);
     // Install template engine
     $templateEngineResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['template-engine'], $templateRendererOption, $copyFilesKey);
     $this->assertTrue($templateEngineResult);
     // Test container
     $container = $this->getContainer();
     $this->assertTrue($container->has(Expressive\Application::class));
     $this->assertTrue($container->has('Zend\\Expressive\\FinalHandler'));
     // Test config
     $config = $container->get('config');
     $this->assertEquals(Expressive\Container\TemplatedErrorHandlerFactory::class, $config['dependencies']['factories']['Zend\\Expressive\\FinalHandler']);
     // Test template renderer
     $templateRenderer = $container->get(Expressive\Template\TemplateRendererInterface::class);
     $this->assertInstanceOf(Expressive\Template\TemplateRendererInterface::class, $templateRenderer);
     $this->assertInstanceOf($expectedTemplateRenderer, $templateRenderer);
     if ($copyFilesKey == 'copy-files') {
         // Test home page for full install only, otherwise you get invalid template name errors
         $response = $this->getAppResponse();
         $this->assertEquals($expectedResponseStatusCode, $response->getStatusCode());
     }
 }
All Usage Examples Of ExpressiveInstaller\OptionalPackages::processAnswer