Пример #1
0
 /**
  * @test
  */
 public function The_has_method_returns_true_if_a_service_is_defined_and_false_if_not()
 {
     // given
     $IdentifyingType = Type::fromName('tueena\\spec\\core\\stubs\\IMyService');
     $ImplementingType = Type::fromName('tueena\\spec\\core\\stubs\\MyService');
     $Target = new ServiceDefinitions();
     $Target->add(IdentifyingType::is($IdentifyingType), ImplementingType::is($ImplementingType));
     // when, then
     $this->assertTrue($Target->has(Type::fromName('tueena\\spec\\core\\stubs\\IMyService')));
     $this->assertFalse($Target->has(Type::fromName('tueena\\spec\\core\\stubs\\MyService')));
 }
Пример #2
0
 /**
  * @param ServiceDefinition $ServiceDefinition
  * @param ServiceDefinitions $ServiceDefinitions
  * @param string $functionType
  * @param Type $RequiredType
  * @param string $parameterName
  */
 private static function ensureParameterIsAService(ServiceDefinition $ServiceDefinition, ServiceDefinitions $ServiceDefinitions, $functionType, Type $RequiredType, $parameterName)
 {
     if ($ServiceDefinitions->has($RequiredType)) {
         return;
     }
     $functionTypeString = $functionType === 'factory' ? 'a factory function' : 'an init function';
     $message = "Invalid parameter \${$parameterName}: ";
     $message .= $RequiredType->getName() . ' is not defined as a service (means: has not been added to the ServiceDefinitions instance with the add() method). ';
     $message .= "Each parameter of {$functionTypeString} must have a defined service as type hint.";
     throw new InvalidServiceDefinition($ServiceDefinition, $message);
 }