php Webmozart-Expression-Expr类(方法)实例源码

下面列出了php Webmozart-Expression-Expr 类(方法)源码代码实例,从而了解它的用法。

作者:webmozar    项目:expressio   
public function testDomainExpressions()
 {
     $c1 = new Customer();
     $c1->setPremium(true);
     $c2 = new Customer();
     $c2->setBookings(array('booking1', 'booking2'));
     $c3 = new Customer();
     $c3->setPremium(true);
     $c3->setBookings(array('booking1'));
     $customers = array($c1, $c2, $c3);
     $this->assertEquals(array($c1, 2 => $c3), Expr::filter($customers, new IsPremium()));
     $this->assertEquals(array(1 => $c2, 2 => $c3), Expr::filter($customers, new HasPreviousBookings()));
     $this->assertEquals(array(2 => $c3), Expr::filter($customers, Expr::andX(array(new HasPreviousBookings(), new IsPremium()))));
 }

作者:webmozar    项目:discover   
public function testRemoveBindingsWithTypeAndParameterWorksOnLoadedDiscovery()
 {
     $binding1 = new StringBinding('string1', Foo::clazz, array('param2' => 'bar'));
     $binding2 = new StringBinding('string2', Foo::clazz);
     $binding3 = new StringBinding('string3', Foo::clazz, array('param1' => 'bar'));
     $discovery = $this->createDiscovery();
     $discovery->addBindingType(new BindingType(Foo::clazz, self::STRING_BINDING, array(new BindingParameter('param1', BindingParameter::OPTIONAL, 'foo'), new BindingParameter('param2'))));
     $discovery->addBinding($binding1);
     $discovery->addBinding($binding2);
     $discovery->addBinding($binding3);
     $discovery = $this->loadDiscoveryFromStorage($discovery);
     // Bindings need to be initialized for this to work
     $discovery->removeBindings(Foo::clazz, Expr::method('getParameterValue', 'param1', Expr::same('foo')));
     $this->assertEquals(array($binding3), $discovery->findBindings(Foo::clazz));
     $this->assertEquals(array($binding3), $discovery->getBindings());
 }

作者:SenseExceptio    项目:cl   
/**
  * Handles the "puli type --list" command.
  *
  * @param Args $args The console arguments.
  * @param IO   $io   The I/O.
  *
  * @return int The status code.
  */
 public function handleList(Args $args, IO $io)
 {
     $packageNames = ArgsUtil::getPackageNames($args, $this->packages);
     $states = $this->getBindingTypeStates($args);
     $printStates = count($states) > 1;
     $printPackageName = count($packageNames) > 1;
     $printHeaders = $printStates || $printPackageName;
     $printTypeAdvice = true;
     $printBindAdvice = false;
     $indentation = $printStates && $printPackageName ? 8 : ($printStates || $printPackageName ? 4 : 0);
     foreach ($states as $state) {
         $statePrinted = !$printStates;
         foreach ($packageNames as $packageName) {
             $expr = Expr::method('getContainingPackage', Expr::method('getName', Expr::same($packageName)))->andMethod('getState', Expr::same($state));
             $bindingTypes = $this->discoveryManager->findTypeDescriptors($expr);
             if (!$bindingTypes) {
                 continue;
             }
             $printTypeAdvice = false;
             if (!$statePrinted) {
                 $this->printBindingTypeState($io, $state);
                 $statePrinted = true;
                 // Only print the advice if at least one type was printed
                 $printBindAdvice = true;
             }
             if ($printPackageName) {
                 $prefix = $printStates ? '    ' : '';
                 $io->writeLine("{$prefix}Package: {$packageName}");
                 $io->writeLine('');
             }
             $styleTag = BindingTypeState::ENABLED === $state ? null : 'bad';
             $this->printTypeTable($io, $bindingTypes, $styleTag, $indentation);
             if ($printHeaders) {
                 $io->writeLine('');
             }
         }
     }
     if ($printTypeAdvice) {
         $io->writeLine('No types defined. Use "puli type --define <name>" to define a type.');
     }
     if ($printBindAdvice) {
         $io->writeLine('Use "puli bind <resource> <type>" to bind a resource to a type.');
     }
     return 0;
 }

作者:kormi    项目:manage   
/**
  * {@inheritdoc}
  */
 public function clearPluginClasses()
 {
     $this->removePluginClasses(Expr::true());
 }

作者:niklongston    项目:manage   
public function testAppendDefaultQuerySuffixForEndsWith()
 {
     $expr1 = Expr::endsWith('.css', AssetMapping::GLOB);
     $expr2 = Expr::same(BindingState::ENABLED, BindingDescriptor::STATE)->andSame(DiscoveryUrlGenerator::BINDING_TYPE, BindingDescriptor::TYPE_NAME)->andEndsWith('{,/**/*}', BindingDescriptor::QUERY)->andEndsWith('.css{,/**/*}', BindingDescriptor::QUERY);
     $this->assertEquals($expr2, $this->builder->buildExpression($expr1));
 }

作者:niklongston    项目:manage   
public function testHasBindings()
 {
     $this->initDefaultManager();
     $this->rootPackageFile->addTypeDescriptor(new BindingTypeDescriptor('my/type1'));
     $this->rootPackageFile->addBindingDescriptor($binding1 = new BindingDescriptor('/path1', 'my/type1'));
     $this->packageFile1->addBindingDescriptor($binding2 = new BindingDescriptor('/path2', 'my/type2'));
     $expr1 = Expr::same('vendor/package1', BindingDescriptor::CONTAINING_PACKAGE);
     $expr2 = Expr::same(BindingState::ENABLED, BindingDescriptor::STATE);
     $expr3 = $expr1->andX($expr2);
     $this->assertTrue($this->manager->hasBindings());
     $this->assertTrue($this->manager->hasBindings($expr1));
     $this->assertTrue($this->manager->hasBindings($expr2));
     $this->assertFalse($this->manager->hasBindings($expr3));
 }

作者:holloway8    项目:cl   
/**
  * Finds the resources for a given binding type.
  *
  * @param string $typeName The type name.
  *
  * @return string[] An array of short resource class names indexed by
  *                  the resource path.
  */
 private function findByBindingType($typeName)
 {
     $matches = array();
     $expr = Expr::isInstanceOf('Puli\\Discovery\\Binding\\ResourceBinding');
     foreach ($this->discovery->findBindings($typeName, $expr) as $binding) {
         /** @var ResourceBinding $binding */
         foreach ($binding->getResources() as $resource) {
             $matches[$resource->getPath()] = StringUtil::getShortClassName(get_class($resource));
         }
     }
     ksort($matches);
     return $matches;
 }

作者:niklongston    项目:manage   
/**
  * {@inheritdoc}
  */
 public function hasRootPathMappings(Expression $expr = null)
 {
     $expr2 = Expr::same($this->rootPackage->getName(), PathMapping::CONTAINING_PACKAGE);
     if ($expr) {
         $expr2 = $expr2->andX($expr);
     }
     return $this->hasPathMappings($expr2);
 }

作者:niklongston    项目:manage   
/**
  * {@inheritdoc}
  */
 public function clearServers()
 {
     $this->removeServers(Expr::true());
 }

作者:xabbu    项目:manage   
/**
  * Returns the resource discovery manager.
  *
  * @return DiscoveryManager The discovery manager.
  */
 public function getDiscoveryManager()
 {
     if (!$this->started) {
         throw new LogicException('Puli was not started');
     }
     if (!$this->discoveryManager && $this->context instanceof ProjectContext) {
         $this->discoveryManager = new DiscoveryManagerImpl($this->context, $this->getDiscovery(), $this->getPackageManager()->findPackages(Expr::method('isEnabled', Expr::same(true))), $this->getPackageFileStorage(), $this->logger);
     }
     return $this->discoveryManager;
 }

作者:niklongston    项目:manage   
public function testRemoveConfigKeysRevertsIfSavingNotPossible()
 {
     $this->configFile->getConfig()->set(Config::PULI_DIR, 'my-puli-dir');
     $this->configFileStorage->expects($this->once())->method('saveConfigFile')->willThrowException(new TestException());
     try {
         $this->manager->removeConfigKeys(Expr::in(array(Config::PULI_DIR, Config::FACTORY_IN_FILE)));
         $this->fail('Expected a TestException');
     } catch (TestException $e) {
     }
     $this->assertTrue($this->configFile->getConfig()->contains(Config::PULI_DIR));
     $this->assertFalse($this->configFile->getConfig()->contains(Config::FACTORY_IN_FILE));
     $this->assertSame('my-puli-dir', $this->configFile->getConfig()->get(Config::PULI_DIR));
 }

作者:sensorari    项目:manage   
/**
  * {@inheritdoc}
  */
 public function clearModules()
 {
     $this->removeModules(Expr::true());
 }

作者:rejink    项目:cl   
/**
  * @param string $uuidPrefix
  *
  * @return AssetMapping
  */
 private function getMappingByUuidPrefix($uuidPrefix)
 {
     $expr = Expr::startsWith($uuidPrefix, AssetMapping::UUID);
     $mappings = $this->assetManager->findAssetMappings($expr);
     if (!$mappings) {
         throw new RuntimeException(sprintf('The mapping with the UUID prefix "%s" does not exist.', $uuidPrefix));
     }
     if (count($mappings) > 1) {
         throw new RuntimeException(sprintf('More than one mapping matches the UUID prefix "%s".', $uuidPrefix));
     }
     return reset($mappings);
 }

作者:SenseExceptio    项目:manage   
/**
  * {@inheritdoc}
  */
 public function hasAssetMapping(Uuid $uuid)
 {
     $expr = Expr::method('getUuid', Expr::method('toString', Expr::same($uuid->toString())))->andX($this->exprBuilder->buildExpression());
     return $this->discoveryManager->hasBindingDescriptors($expr);
 }

作者:rejink    项目:cl   
/**
  * Returns the packages that should be displayed for the given console
  * arguments.
  *
  * @param Args $args The console arguments.
  *
  * @return PackageCollection The packages.
  */
 private function getSelectedPackages(Args $args)
 {
     $states = $this->getSelectedStates($args);
     $expr = Expr::true();
     if ($states != PackageState::all()) {
         $expr = $expr->andIn($states, Package::STATE);
     }
     if ($args->isOptionSet('installer')) {
         $expr = $expr->andSame($args->getOption('installer'), Package::INSTALLER);
     }
     return $this->packageManager->findPackages($expr);
 }

作者:rejink    项目:cl   
private function packageAndState($packageName, $state)
 {
     return Expr::same($packageName, BindingTypeDescriptor::CONTAINING_PACKAGE)->andSame($state, BindingTypeDescriptor::STATE);
 }

作者:webmozar    项目:cl   
/**
  * Returns the packages that should be displayed for the given console
  * arguments.
  *
  * @param Args $args The console arguments.
  *
  * @return PackageCollection The packages.
  */
 private function getSelectedPackages(Args $args)
 {
     $states = $this->getSelectedStates($args);
     $expr = Expr::true();
     $envs = array();
     if ($states !== PackageState::all()) {
         $expr = $expr->andMethod('getState', Expr::in($states));
     }
     if ($args->isOptionSet('installer')) {
         $expr = $expr->andMethod('getInstallInfo', Expr::method('getInstallerName', Expr::same($args->getOption('installer'))));
     }
     if ($args->isOptionSet('prod')) {
         $envs[] = Environment::PROD;
     }
     if ($args->isOptionSet('dev')) {
         $envs[] = Environment::DEV;
     }
     if (count($envs) > 0) {
         $expr = $expr->andMethod('getInstallInfo', Expr::method('getEnvironment', Expr::in($envs)));
     }
     return $this->packageManager->findPackages($expr);
 }

作者:rejink    项目:cl   
private function installerAndState($installer, $state)
 {
     return Expr::same($installer, Package::INSTALLER)->andSame($state, Package::STATE);
 }

作者:niklongston    项目:manage   
public function testRemoveServersRevertsIfSavingFails()
 {
     $this->packageFileManager->expects($this->any())->method('getExtraKey')->with(PackageFileServerManager::SERVERS_KEY)->willReturn((object) array('localhost' => (object) array('installer' => 'symlink', 'document-root' => 'web', 'url-format' => '/public/%s'), 'cdn' => (object) array('installer' => 'rsync', 'document-root' => 'ssh://my.cdn.com', 'parameters' => (object) array('param' => 'value'))));
     $this->packageFileManager->expects($this->once())->method('setExtraKey')->willThrowException(new TestException());
     try {
         $this->serverManager->removeServers(Expr::startsWith('localhost', Server::NAME));
         $this->fail('Expected a TestException');
     } catch (TestException $e) {
     }
     $this->assertTrue($this->serverManager->hasServer('localhost'));
     $this->assertTrue($this->serverManager->hasServer('cdn'));
 }

作者:niklongston    项目:manage   
public function testMatch()
 {
     $type = new BindingTypeDescriptor('vendor/type');
     $type->load($this->package);
     $this->assertFalse($type->match(Expr::same('foobar', BindingTypeDescriptor::NAME)));
     $this->assertTrue($type->match(Expr::same('vendor/type', BindingTypeDescriptor::NAME)));
     $this->assertFalse($type->match(Expr::same('foobar', BindingTypeDescriptor::CONTAINING_PACKAGE)));
     $this->assertTrue($type->match(Expr::same($this->package->getName(), BindingTypeDescriptor::CONTAINING_PACKAGE)));
     $this->assertFalse($type->match(Expr::same(BindingTypeState::DUPLICATE, BindingTypeDescriptor::STATE)));
     $this->assertTrue($type->match(Expr::same(BindingTypeState::ENABLED, BindingTypeDescriptor::STATE)));
 }


问题


面经


文章

微信
公众号

扫码关注公众号