@@ -41,17 +41,17 @@ discard block |
||
| 41 | 41 | */ |
| 42 | 42 | public function instantiate(ReflectionClass $attr, array $arguments, Reflector $context = null): object |
| 43 | 43 | { |
| 44 | - if ($this->isNamedArgumentsSupported()) { |
|
| 45 | - try { |
|
| 44 | + if ($this->isNamedArgumentsSupported()){ |
|
| 45 | + try{ |
|
| 46 | 46 | return $attr->newInstanceArgs($arguments); |
| 47 | - } catch (Throwable $e) { |
|
| 47 | + }catch (Throwable $e){ |
|
| 48 | 48 | throw Exception::withLocation($e, $attr->getFileName(), $attr->getStartLine()); |
| 49 | 49 | } |
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | $constructor = $this->getConstructor($attr); |
| 53 | 53 | |
| 54 | - if ($constructor === null) { |
|
| 54 | + if ($constructor === null){ |
|
| 55 | 55 | return $attr->newInstanceWithoutConstructor(); |
| 56 | 56 | } |
| 57 | 57 | |
@@ -72,16 +72,16 @@ discard block |
||
| 72 | 72 | { |
| 73 | 73 | $passed = []; |
| 74 | 74 | |
| 75 | - try { |
|
| 76 | - foreach ($constructor->getParameters() as $parameter) { |
|
| 75 | + try{ |
|
| 76 | + foreach ($constructor->getParameters() as $parameter){ |
|
| 77 | 77 | $passed[] = $this->resolveParameter($ctx, $parameter, $arguments); |
| 78 | 78 | } |
| 79 | 79 | |
| 80 | - if (\count($arguments)) { |
|
| 80 | + if (\count($arguments)){ |
|
| 81 | 81 | $message = \sprintf(self::ERROR_UNKNOWN_ARGUMENT, \array_key_first($arguments)); |
| 82 | 82 | throw new BadMethodCallException($message); |
| 83 | 83 | } |
| 84 | - } catch (Throwable $e) { |
|
| 84 | + }catch (Throwable $e){ |
|
| 85 | 85 | throw Exception::withLocation($e, $constructor->getFileName(), $constructor->getStartLine()); |
| 86 | 86 | } |
| 87 | 87 | |
@@ -94,19 +94,19 @@ discard block |
||
| 94 | 94 | */ |
| 95 | 95 | private function resolveParameter(ReflectionClass $ctx, ReflectionParameter $param, array &$arguments) |
| 96 | 96 | { |
| 97 | - switch (true) { |
|
| 97 | + switch (true){ |
|
| 98 | 98 | case \array_key_exists($param->getName(), $arguments): |
| 99 | - try { |
|
| 99 | + try{ |
|
| 100 | 100 | return $arguments[$param->getName()]; |
| 101 | - } finally { |
|
| 101 | + }finally{ |
|
| 102 | 102 | unset($arguments[$param->getName()]); |
| 103 | 103 | } |
| 104 | 104 | // no actual falling through |
| 105 | 105 | |
| 106 | 106 | case \array_key_exists($param->getPosition(), $arguments): |
| 107 | - try { |
|
| 107 | + try{ |
|
| 108 | 108 | return $arguments[$param->getPosition()]; |
| 109 | - } finally { |
|
| 109 | + }finally{ |
|
| 110 | 110 | unset($arguments[$param->getPosition()]); |
| 111 | 111 | } |
| 112 | 112 | // no actual falling through |
@@ -41,17 +41,22 @@ discard block |
||
| 41 | 41 | */ |
| 42 | 42 | public function instantiate(ReflectionClass $attr, array $arguments, Reflector $context = null): object |
| 43 | 43 | { |
| 44 | - if ($this->isNamedArgumentsSupported()) { |
|
| 45 | - try { |
|
| 44 | + if ($this->isNamedArgumentsSupported()) |
|
| 45 | + { |
|
| 46 | + try |
|
| 47 | + { |
|
| 46 | 48 | return $attr->newInstanceArgs($arguments); |
| 47 | - } catch (Throwable $e) { |
|
| 49 | + } |
|
| 50 | + catch (Throwable $e) |
|
| 51 | + { |
|
| 48 | 52 | throw Exception::withLocation($e, $attr->getFileName(), $attr->getStartLine()); |
| 49 | 53 | } |
| 50 | 54 | } |
| 51 | 55 | |
| 52 | 56 | $constructor = $this->getConstructor($attr); |
| 53 | 57 | |
| 54 | - if ($constructor === null) { |
|
| 58 | + if ($constructor === null) |
|
| 59 | + { |
|
| 55 | 60 | return $attr->newInstanceWithoutConstructor(); |
| 56 | 61 | } |
| 57 | 62 | |
@@ -72,16 +77,21 @@ discard block |
||
| 72 | 77 | { |
| 73 | 78 | $passed = []; |
| 74 | 79 | |
| 75 | - try { |
|
| 76 | - foreach ($constructor->getParameters() as $parameter) { |
|
| 80 | + try |
|
| 81 | + { |
|
| 82 | + foreach ($constructor->getParameters() as $parameter) |
|
| 83 | + { |
|
| 77 | 84 | $passed[] = $this->resolveParameter($ctx, $parameter, $arguments); |
| 78 | 85 | } |
| 79 | 86 | |
| 80 | - if (\count($arguments)) { |
|
| 87 | + if (\count($arguments)) |
|
| 88 | + { |
|
| 81 | 89 | $message = \sprintf(self::ERROR_UNKNOWN_ARGUMENT, \array_key_first($arguments)); |
| 82 | 90 | throw new BadMethodCallException($message); |
| 83 | 91 | } |
| 84 | - } catch (Throwable $e) { |
|
| 92 | + } |
|
| 93 | + catch (Throwable $e) |
|
| 94 | + { |
|
| 85 | 95 | throw Exception::withLocation($e, $constructor->getFileName(), $constructor->getStartLine()); |
| 86 | 96 | } |
| 87 | 97 | |
@@ -94,19 +104,26 @@ discard block |
||
| 94 | 104 | */ |
| 95 | 105 | private function resolveParameter(ReflectionClass $ctx, ReflectionParameter $param, array &$arguments) |
| 96 | 106 | { |
| 97 | - switch (true) { |
|
| 107 | + switch (true) |
|
| 108 | + { |
|
| 98 | 109 | case \array_key_exists($param->getName(), $arguments): |
| 99 | - try { |
|
| 110 | + try |
|
| 111 | + { |
|
| 100 | 112 | return $arguments[$param->getName()]; |
| 101 | - } finally { |
|
| 113 | + } |
|
| 114 | + finally |
|
| 115 | + { |
|
| 102 | 116 | unset($arguments[$param->getName()]); |
| 103 | 117 | } |
| 104 | 118 | // no actual falling through |
| 105 | 119 | |
| 106 | 120 | case \array_key_exists($param->getPosition(), $arguments): |
| 107 | - try { |
|
| 121 | + try |
|
| 122 | + { |
|
| 108 | 123 | return $arguments[$param->getPosition()]; |
| 109 | - } finally { |
|
| 124 | + } |
|
| 125 | + finally |
|
| 126 | + { |
|
| 110 | 127 | unset($arguments[$param->getPosition()]); |
| 111 | 128 | } |
| 112 | 129 | // no actual falling through |
@@ -42,7 +42,7 @@ |
||
| 42 | 42 | */ |
| 43 | 43 | public function instantiate(ReflectionClass $attr, array $arguments, Reflector $context = null): object |
| 44 | 44 | { |
| 45 | - if ($this->isNamedArguments($attr)) { |
|
| 45 | + if ($this->isNamedArguments($attr)){ |
|
| 46 | 46 | return $this->named->instantiate($attr, $arguments, $context); |
| 47 | 47 | } |
| 48 | 48 | |
@@ -42,7 +42,8 @@ |
||
| 42 | 42 | */ |
| 43 | 43 | public function instantiate(ReflectionClass $attr, array $arguments, Reflector $context = null): object |
| 44 | 44 | { |
| 45 | - if ($this->isNamedArguments($attr)) { |
|
| 45 | + if ($this->isNamedArguments($attr)) |
|
| 46 | + { |
|
| 46 | 47 | return $this->named->instantiate($attr, $arguments, $context); |
| 47 | 48 | } |
| 48 | 49 | |
@@ -52,11 +52,11 @@ discard block |
||
| 52 | 52 | { |
| 53 | 53 | $attributes = $this->getClassAttributes($class, $name); |
| 54 | 54 | |
| 55 | - foreach ($attributes as $attribute => $arguments) { |
|
| 55 | + foreach ($attributes as $attribute => $arguments){ |
|
| 56 | 56 | yield $this->instantiator->instantiate($attribute, $arguments, $class); |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | - foreach ($class->getTraits() as $trait) { |
|
| 59 | + foreach ($class->getTraits() as $trait){ |
|
| 60 | 60 | yield from $this->getClassMetadata($trait, $name); |
| 61 | 61 | } |
| 62 | 62 | } |
@@ -69,7 +69,7 @@ discard block |
||
| 69 | 69 | { |
| 70 | 70 | $attributes = $this->getFunctionAttributes($function, $name); |
| 71 | 71 | |
| 72 | - foreach ($attributes as $attribute => $arguments) { |
|
| 72 | + foreach ($attributes as $attribute => $arguments){ |
|
| 73 | 73 | yield $this->instantiator->instantiate($attribute, $arguments, $function); |
| 74 | 74 | } |
| 75 | 75 | } |
@@ -82,7 +82,7 @@ discard block |
||
| 82 | 82 | { |
| 83 | 83 | $attributes = $this->getPropertyAttributes($property, $name); |
| 84 | 84 | |
| 85 | - foreach ($attributes as $attribute => $arguments) { |
|
| 85 | + foreach ($attributes as $attribute => $arguments){ |
|
| 86 | 86 | yield $this->instantiator->instantiate($attribute, $arguments, $property); |
| 87 | 87 | } |
| 88 | 88 | } |
@@ -95,7 +95,7 @@ discard block |
||
| 95 | 95 | { |
| 96 | 96 | $attributes = $this->getConstantAttributes($constant, $name); |
| 97 | 97 | |
| 98 | - foreach ($attributes as $attribute => $arguments) { |
|
| 98 | + foreach ($attributes as $attribute => $arguments){ |
|
| 99 | 99 | yield $this->instantiator->instantiate($attribute, $arguments, $constant); |
| 100 | 100 | } |
| 101 | 101 | } |
@@ -108,14 +108,14 @@ discard block |
||
| 108 | 108 | { |
| 109 | 109 | $attributes = $this->getParameterAttributes($parameter, $name); |
| 110 | 110 | |
| 111 | - foreach ($attributes as $attribute => $arguments) { |
|
| 111 | + foreach ($attributes as $attribute => $arguments){ |
|
| 112 | 112 | yield $this->instantiator->instantiate($attribute, $arguments, $parameter); |
| 113 | 113 | } |
| 114 | 114 | } |
| 115 | 115 | |
| 116 | 116 | protected function assertClassExists(string $class, Reflector $context): void |
| 117 | 117 | { |
| 118 | - if (!\class_exists($class)) { |
|
| 118 | + if (!\class_exists($class)){ |
|
| 119 | 119 | $message = \vsprintf('The metadata class "%s" in %s was not found', [ |
| 120 | 120 | $class, |
| 121 | 121 | $this->renderer->render($context), |
@@ -52,11 +52,13 @@ discard block |
||
| 52 | 52 | { |
| 53 | 53 | $attributes = $this->getClassAttributes($class, $name); |
| 54 | 54 | |
| 55 | - foreach ($attributes as $attribute => $arguments) { |
|
| 55 | + foreach ($attributes as $attribute => $arguments) |
|
| 56 | + { |
|
| 56 | 57 | yield $this->instantiator->instantiate($attribute, $arguments, $class); |
| 57 | 58 | } |
| 58 | 59 | |
| 59 | - foreach ($class->getTraits() as $trait) { |
|
| 60 | + foreach ($class->getTraits() as $trait) |
|
| 61 | + { |
|
| 60 | 62 | yield from $this->getClassMetadata($trait, $name); |
| 61 | 63 | } |
| 62 | 64 | } |
@@ -69,7 +71,8 @@ discard block |
||
| 69 | 71 | { |
| 70 | 72 | $attributes = $this->getFunctionAttributes($function, $name); |
| 71 | 73 | |
| 72 | - foreach ($attributes as $attribute => $arguments) { |
|
| 74 | + foreach ($attributes as $attribute => $arguments) |
|
| 75 | + { |
|
| 73 | 76 | yield $this->instantiator->instantiate($attribute, $arguments, $function); |
| 74 | 77 | } |
| 75 | 78 | } |
@@ -82,7 +85,8 @@ discard block |
||
| 82 | 85 | { |
| 83 | 86 | $attributes = $this->getPropertyAttributes($property, $name); |
| 84 | 87 | |
| 85 | - foreach ($attributes as $attribute => $arguments) { |
|
| 88 | + foreach ($attributes as $attribute => $arguments) |
|
| 89 | + { |
|
| 86 | 90 | yield $this->instantiator->instantiate($attribute, $arguments, $property); |
| 87 | 91 | } |
| 88 | 92 | } |
@@ -95,7 +99,8 @@ discard block |
||
| 95 | 99 | { |
| 96 | 100 | $attributes = $this->getConstantAttributes($constant, $name); |
| 97 | 101 | |
| 98 | - foreach ($attributes as $attribute => $arguments) { |
|
| 102 | + foreach ($attributes as $attribute => $arguments) |
|
| 103 | + { |
|
| 99 | 104 | yield $this->instantiator->instantiate($attribute, $arguments, $constant); |
| 100 | 105 | } |
| 101 | 106 | } |
@@ -108,14 +113,16 @@ discard block |
||
| 108 | 113 | { |
| 109 | 114 | $attributes = $this->getParameterAttributes($parameter, $name); |
| 110 | 115 | |
| 111 | - foreach ($attributes as $attribute => $arguments) { |
|
| 116 | + foreach ($attributes as $attribute => $arguments) |
|
| 117 | + { |
|
| 112 | 118 | yield $this->instantiator->instantiate($attribute, $arguments, $parameter); |
| 113 | 119 | } |
| 114 | 120 | } |
| 115 | 121 | |
| 116 | 122 | protected function assertClassExists(string $class, Reflector $context): void |
| 117 | 123 | { |
| 118 | - if (!\class_exists($class)) { |
|
| 124 | + if (!\class_exists($class)) |
|
| 125 | + { |
|
| 119 | 126 | $message = \vsprintf('The metadata class "%s" in %s was not found', [ |
| 120 | 127 | $class, |
| 121 | 128 | $this->renderer->render($context), |
@@ -99,7 +99,7 @@ discard block |
||
| 99 | 99 | { |
| 100 | 100 | // 1) Can not parse internal classes |
| 101 | 101 | // 2) Anonymous classes don't support attributes (PHP semantic) |
| 102 | - if ($class->isInternal() || $class->isAnonymous()) { |
|
| 102 | + if ($class->isInternal() || $class->isAnonymous()){ |
|
| 103 | 103 | return []; |
| 104 | 104 | } |
| 105 | 105 | |
@@ -114,7 +114,7 @@ discard block |
||
| 114 | 114 | protected function getFunctionAttributes(ReflectionFunctionAbstract $function, ?string $name): iterable |
| 115 | 115 | { |
| 116 | 116 | // Can not parse internal functions |
| 117 | - if ($function->isInternal()) { |
|
| 117 | + if ($function->isInternal()){ |
|
| 118 | 118 | return []; |
| 119 | 119 | } |
| 120 | 120 | |
@@ -132,7 +132,7 @@ discard block |
||
| 132 | 132 | $class = $property->getDeclaringClass(); |
| 133 | 133 | |
| 134 | 134 | // Can not parse property of internal class |
| 135 | - if ($class->isInternal()) { |
|
| 135 | + if ($class->isInternal()){ |
|
| 136 | 136 | return []; |
| 137 | 137 | } |
| 138 | 138 | |
@@ -149,7 +149,7 @@ discard block |
||
| 149 | 149 | $class = $const->getDeclaringClass(); |
| 150 | 150 | |
| 151 | 151 | // Can not parse internal classes |
| 152 | - if ($class->isInternal()) { |
|
| 152 | + if ($class->isInternal()){ |
|
| 153 | 153 | return []; |
| 154 | 154 | } |
| 155 | 155 | |
@@ -166,7 +166,7 @@ discard block |
||
| 166 | 166 | $function = $param->getDeclaringFunction(); |
| 167 | 167 | |
| 168 | 168 | // Can not parse parameter of internal function |
| 169 | - if ($function->isInternal()) { |
|
| 169 | + if ($function->isInternal()){ |
|
| 170 | 170 | return []; |
| 171 | 171 | } |
| 172 | 172 | |
@@ -183,7 +183,7 @@ discard block |
||
| 183 | 183 | */ |
| 184 | 184 | private function parseAttributes(string $file, int $context): array |
| 185 | 185 | { |
| 186 | - if (!isset($this->attributes[$file])) { |
|
| 186 | + if (!isset($this->attributes[$file])){ |
|
| 187 | 187 | $found = $this->parser->parse($file); |
| 188 | 188 | |
| 189 | 189 | $this->attributes[$file] = [ |
@@ -205,8 +205,8 @@ discard block |
||
| 205 | 205 | */ |
| 206 | 206 | private function format(iterable $attributes, ?string $name, Reflector $context): iterable |
| 207 | 207 | { |
| 208 | - foreach ($attributes as $prototype) { |
|
| 209 | - if ($prototype->name !== $name && $name !== null && !\is_subclass_of($prototype->name, $name)) { |
|
| 208 | + foreach ($attributes as $prototype){ |
|
| 209 | + if ($prototype->name !== $name && $name !== null && !\is_subclass_of($prototype->name, $name)){ |
|
| 210 | 210 | continue; |
| 211 | 211 | } |
| 212 | 212 | |
@@ -241,7 +241,7 @@ discard block |
||
| 241 | 241 | */ |
| 242 | 242 | $line = $function->getEndLine(); |
| 243 | 243 | |
| 244 | - if ($result = $attributes[$line] ?? null) { |
|
| 244 | + if ($result = $attributes[$line] ?? null){ |
|
| 245 | 245 | return $result; |
| 246 | 246 | } |
| 247 | 247 | |
@@ -266,9 +266,9 @@ discard block |
||
| 266 | 266 | * $ast->getEndLine(); // 2 (last significant character of a function) |
| 267 | 267 | * </code> |
| 268 | 268 | */ |
| 269 | - if ($function->isClosure()) { |
|
| 270 | - while ($line-- > $function->getStartLine()) { |
|
| 271 | - if ($result = $attributes[$line] ?? null) { |
|
| 269 | + if ($function->isClosure()){ |
|
| 270 | + while ($line-- > $function->getStartLine()){ |
|
| 271 | + if ($result = $attributes[$line] ?? null){ |
|
| 272 | 272 | return $result; |
| 273 | 273 | } |
| 274 | 274 | } |
@@ -99,7 +99,8 @@ discard block |
||
| 99 | 99 | { |
| 100 | 100 | // 1) Can not parse internal classes |
| 101 | 101 | // 2) Anonymous classes don't support attributes (PHP semantic) |
| 102 | - if ($class->isInternal() || $class->isAnonymous()) { |
|
| 102 | + if ($class->isInternal() || $class->isAnonymous()) |
|
| 103 | + { |
|
| 103 | 104 | return []; |
| 104 | 105 | } |
| 105 | 106 | |
@@ -114,7 +115,8 @@ discard block |
||
| 114 | 115 | protected function getFunctionAttributes(ReflectionFunctionAbstract $function, ?string $name): iterable |
| 115 | 116 | { |
| 116 | 117 | // Can not parse internal functions |
| 117 | - if ($function->isInternal()) { |
|
| 118 | + if ($function->isInternal()) |
|
| 119 | + { |
|
| 118 | 120 | return []; |
| 119 | 121 | } |
| 120 | 122 | |
@@ -132,7 +134,8 @@ discard block |
||
| 132 | 134 | $class = $property->getDeclaringClass(); |
| 133 | 135 | |
| 134 | 136 | // Can not parse property of internal class |
| 135 | - if ($class->isInternal()) { |
|
| 137 | + if ($class->isInternal()) |
|
| 138 | + { |
|
| 136 | 139 | return []; |
| 137 | 140 | } |
| 138 | 141 | |
@@ -149,7 +152,8 @@ discard block |
||
| 149 | 152 | $class = $const->getDeclaringClass(); |
| 150 | 153 | |
| 151 | 154 | // Can not parse internal classes |
| 152 | - if ($class->isInternal()) { |
|
| 155 | + if ($class->isInternal()) |
|
| 156 | + { |
|
| 153 | 157 | return []; |
| 154 | 158 | } |
| 155 | 159 | |
@@ -166,7 +170,8 @@ discard block |
||
| 166 | 170 | $function = $param->getDeclaringFunction(); |
| 167 | 171 | |
| 168 | 172 | // Can not parse parameter of internal function |
| 169 | - if ($function->isInternal()) { |
|
| 173 | + if ($function->isInternal()) |
|
| 174 | + { |
|
| 170 | 175 | return []; |
| 171 | 176 | } |
| 172 | 177 | |
@@ -183,7 +188,8 @@ discard block |
||
| 183 | 188 | */ |
| 184 | 189 | private function parseAttributes(string $file, int $context): array |
| 185 | 190 | { |
| 186 | - if (!isset($this->attributes[$file])) { |
|
| 191 | + if (!isset($this->attributes[$file])) |
|
| 192 | + { |
|
| 187 | 193 | $found = $this->parser->parse($file); |
| 188 | 194 | |
| 189 | 195 | $this->attributes[$file] = [ |
@@ -205,8 +211,10 @@ discard block |
||
| 205 | 211 | */ |
| 206 | 212 | private function format(iterable $attributes, ?string $name, Reflector $context): iterable |
| 207 | 213 | { |
| 208 | - foreach ($attributes as $prototype) { |
|
| 209 | - if ($prototype->name !== $name && $name !== null && !\is_subclass_of($prototype->name, $name)) { |
|
| 214 | + foreach ($attributes as $prototype) |
|
| 215 | + { |
|
| 216 | + if ($prototype->name !== $name && $name !== null && !\is_subclass_of($prototype->name, $name)) |
|
| 217 | + { |
|
| 210 | 218 | continue; |
| 211 | 219 | } |
| 212 | 220 | |
@@ -241,7 +249,8 @@ discard block |
||
| 241 | 249 | */ |
| 242 | 250 | $line = $function->getEndLine(); |
| 243 | 251 | |
| 244 | - if ($result = $attributes[$line] ?? null) { |
|
| 252 | + if ($result = $attributes[$line] ?? null) |
|
| 253 | + { |
|
| 245 | 254 | return $result; |
| 246 | 255 | } |
| 247 | 256 | |
@@ -266,9 +275,12 @@ discard block |
||
| 266 | 275 | * $ast->getEndLine(); // 2 (last significant character of a function) |
| 267 | 276 | * </code> |
| 268 | 277 | */ |
| 269 | - if ($function->isClosure()) { |
|
| 270 | - while ($line-- > $function->getStartLine()) { |
|
| 271 | - if ($result = $attributes[$line] ?? null) { |
|
| 278 | + if ($function->isClosure()) |
|
| 279 | + { |
|
| 280 | + while ($line-- > $function->getStartLine()) |
|
| 281 | + { |
|
| 282 | + if ($result = $attributes[$line] ?? null) |
|
| 283 | + { |
|
| 272 | 284 | return $result; |
| 273 | 285 | } |
| 274 | 286 | } |
@@ -86,7 +86,7 @@ discard block |
||
| 86 | 86 | |
| 87 | 87 | private function checkAvailability(): void |
| 88 | 88 | { |
| 89 | - if (!self::isAvailable()) { |
|
| 89 | + if (!self::isAvailable()){ |
|
| 90 | 90 | throw new InitializationException('Requires the PHP >= 8.0'); |
| 91 | 91 | } |
| 92 | 92 | } |
@@ -98,7 +98,7 @@ discard block |
||
| 98 | 98 | */ |
| 99 | 99 | private function format(Reflector $context, iterable $attributes): iterable |
| 100 | 100 | { |
| 101 | - foreach ($attributes as $attribute) { |
|
| 101 | + foreach ($attributes as $attribute){ |
|
| 102 | 102 | $this->assertClassExists($attribute->getName(), $context); |
| 103 | 103 | |
| 104 | 104 | yield new ReflectionClass($attribute->getName()) => $attribute->getArguments(); |
@@ -86,7 +86,8 @@ discard block |
||
| 86 | 86 | |
| 87 | 87 | private function checkAvailability(): void |
| 88 | 88 | { |
| 89 | - if (!self::isAvailable()) { |
|
| 89 | + if (!self::isAvailable()) |
|
| 90 | + { |
|
| 90 | 91 | throw new InitializationException('Requires the PHP >= 8.0'); |
| 91 | 92 | } |
| 92 | 93 | } |
@@ -98,7 +99,8 @@ discard block |
||
| 98 | 99 | */ |
| 99 | 100 | private function format(Reflector $context, iterable $attributes): iterable |
| 100 | 101 | { |
| 101 | - foreach ($attributes as $attribute) { |
|
| 102 | + foreach ($attributes as $attribute) |
|
| 103 | + { |
|
| 102 | 104 | $this->assertClassExists($attribute->getName(), $context); |
| 103 | 105 | |
| 104 | 106 | yield new ReflectionClass($attribute->getName()) => $attribute->getArguments(); |
@@ -130,7 +130,7 @@ |
||
| 130 | 130 | */ |
| 131 | 131 | protected function iterableToArray(iterable $attributes): array |
| 132 | 132 | { |
| 133 | - if ($attributes instanceof Traversable) { |
|
| 133 | + if ($attributes instanceof Traversable){ |
|
| 134 | 134 | return \iterator_to_array($attributes, false); |
| 135 | 135 | } |
| 136 | 136 | |
@@ -130,7 +130,8 @@ |
||
| 130 | 130 | */ |
| 131 | 131 | protected function iterableToArray(iterable $attributes): array |
| 132 | 132 | { |
| 133 | - if ($attributes instanceof Traversable) { |
|
| 133 | + if ($attributes instanceof Traversable) |
|
| 134 | + { |
|
| 134 | 135 | return \iterator_to_array($attributes, false); |
| 135 | 136 | } |
| 136 | 137 | |
@@ -140,23 +140,23 @@ discard block |
||
| 140 | 140 | { |
| 141 | 141 | $this->updateContext($node); |
| 142 | 142 | |
| 143 | - if ($node instanceof ClassLike) { |
|
| 144 | - foreach ($this->parse($node->attrGroups) as $prototype) { |
|
| 143 | + if ($node instanceof ClassLike){ |
|
| 144 | + foreach ($this->parse($node->attrGroups) as $prototype){ |
|
| 145 | 145 | $this->classes[$node->namespacedName->toString()][] = $prototype; |
| 146 | 146 | } |
| 147 | 147 | |
| 148 | 148 | return null; |
| 149 | 149 | } |
| 150 | 150 | |
| 151 | - if ($node instanceof FunctionLike) { |
|
| 151 | + if ($node instanceof FunctionLike){ |
|
| 152 | 152 | $line = $node->getEndLine(); |
| 153 | 153 | |
| 154 | - foreach ($this->parse($node->getAttrGroups()) as $prototype) { |
|
| 154 | + foreach ($this->parse($node->getAttrGroups()) as $prototype){ |
|
| 155 | 155 | $this->functions[$line][] = $prototype; |
| 156 | 156 | } |
| 157 | 157 | |
| 158 | - foreach ($node->getParams() as $param) { |
|
| 159 | - foreach ($this->parse($param->attrGroups) as $prototype) { |
|
| 158 | + foreach ($node->getParams() as $param){ |
|
| 159 | + foreach ($this->parse($param->attrGroups) as $prototype){ |
|
| 160 | 160 | assert(\is_string($param->var->name), 'Function parameter name should be an identifier'); |
| 161 | 161 | |
| 162 | 162 | $this->parameters[$line][$param->var->name][] = $prototype; |
@@ -166,11 +166,11 @@ discard block |
||
| 166 | 166 | return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN; |
| 167 | 167 | } |
| 168 | 168 | |
| 169 | - if ($node instanceof ClassConst) { |
|
| 169 | + if ($node instanceof ClassConst){ |
|
| 170 | 170 | $class = $this->fqn(); |
| 171 | 171 | |
| 172 | - foreach ($this->parse($node->attrGroups) as $prototype) { |
|
| 173 | - foreach ($node->consts as $const) { |
|
| 172 | + foreach ($this->parse($node->attrGroups) as $prototype){ |
|
| 173 | + foreach ($node->consts as $const){ |
|
| 174 | 174 | $this->constants[$class][$this->name($const->name)][] = $prototype; |
| 175 | 175 | } |
| 176 | 176 | } |
@@ -178,11 +178,11 @@ discard block |
||
| 178 | 178 | return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN; |
| 179 | 179 | } |
| 180 | 180 | |
| 181 | - if ($node instanceof Property) { |
|
| 181 | + if ($node instanceof Property){ |
|
| 182 | 182 | $class = $this->fqn(); |
| 183 | 183 | |
| 184 | - foreach ($this->parse($node->attrGroups) as $prototype) { |
|
| 185 | - foreach ($node->props as $property) { |
|
| 184 | + foreach ($this->parse($node->attrGroups) as $prototype){ |
|
| 185 | + foreach ($node->props as $property){ |
|
| 186 | 186 | $this->properties[$class][$this->name($property->name)][] = $prototype; |
| 187 | 187 | } |
| 188 | 188 | } |
@@ -195,27 +195,27 @@ discard block |
||
| 195 | 195 | |
| 196 | 196 | public function leaveNode(Node $node): void |
| 197 | 197 | { |
| 198 | - if ($node instanceof Namespace_) { |
|
| 198 | + if ($node instanceof Namespace_){ |
|
| 199 | 199 | $this->context[AttributeParser::CTX_NAMESPACE] = ''; |
| 200 | 200 | |
| 201 | 201 | return; |
| 202 | 202 | } |
| 203 | 203 | |
| 204 | - if ($node instanceof ClassLike) { |
|
| 204 | + if ($node instanceof ClassLike){ |
|
| 205 | 205 | $this->context[AttributeParser::CTX_CLASS] = ''; |
| 206 | 206 | $this->context[AttributeParser::CTX_TRAIT] = ''; |
| 207 | 207 | |
| 208 | 208 | return; |
| 209 | 209 | } |
| 210 | 210 | |
| 211 | - if ($node instanceof FunctionLike) { |
|
| 211 | + if ($node instanceof FunctionLike){ |
|
| 212 | 212 | $this->context[AttributeParser::CTX_FUNCTION] = ''; |
| 213 | 213 | } |
| 214 | 214 | } |
| 215 | 215 | |
| 216 | 216 | private function updateContext(Node $node): void |
| 217 | 217 | { |
| 218 | - switch (true) { |
|
| 218 | + switch (true){ |
|
| 219 | 219 | case $node instanceof Namespace_: |
| 220 | 220 | $this->context[AttributeParser::CTX_NAMESPACE] = $this->name($node->name); |
| 221 | 221 | break; |
@@ -240,7 +240,7 @@ discard block |
||
| 240 | 240 | */ |
| 241 | 241 | private function name($name): string |
| 242 | 242 | { |
| 243 | - if ($name === null) { |
|
| 243 | + if ($name === null){ |
|
| 244 | 244 | return ''; |
| 245 | 245 | } |
| 246 | 246 | |
@@ -262,6 +262,6 @@ discard block |
||
| 262 | 262 | $namespace = $this->context[AttributeParser::CTX_NAMESPACE] ?? ''; |
| 263 | 263 | $class = $this->context[AttributeParser::CTX_CLASS] ?? ''; |
| 264 | 264 | |
| 265 | - return \trim($namespace . '\\' . $class, '\\'); |
|
| 265 | + return \trim($namespace.'\\'.$class, '\\'); |
|
| 266 | 266 | } |
| 267 | 267 | } |
@@ -140,23 +140,29 @@ discard block |
||
| 140 | 140 | { |
| 141 | 141 | $this->updateContext($node); |
| 142 | 142 | |
| 143 | - if ($node instanceof ClassLike) { |
|
| 144 | - foreach ($this->parse($node->attrGroups) as $prototype) { |
|
| 143 | + if ($node instanceof ClassLike) |
|
| 144 | + { |
|
| 145 | + foreach ($this->parse($node->attrGroups) as $prototype) |
|
| 146 | + { |
|
| 145 | 147 | $this->classes[$node->namespacedName->toString()][] = $prototype; |
| 146 | 148 | } |
| 147 | 149 | |
| 148 | 150 | return null; |
| 149 | 151 | } |
| 150 | 152 | |
| 151 | - if ($node instanceof FunctionLike) { |
|
| 153 | + if ($node instanceof FunctionLike) |
|
| 154 | + { |
|
| 152 | 155 | $line = $node->getEndLine(); |
| 153 | 156 | |
| 154 | - foreach ($this->parse($node->getAttrGroups()) as $prototype) { |
|
| 157 | + foreach ($this->parse($node->getAttrGroups()) as $prototype) |
|
| 158 | + { |
|
| 155 | 159 | $this->functions[$line][] = $prototype; |
| 156 | 160 | } |
| 157 | 161 | |
| 158 | - foreach ($node->getParams() as $param) { |
|
| 159 | - foreach ($this->parse($param->attrGroups) as $prototype) { |
|
| 162 | + foreach ($node->getParams() as $param) |
|
| 163 | + { |
|
| 164 | + foreach ($this->parse($param->attrGroups) as $prototype) |
|
| 165 | + { |
|
| 160 | 166 | assert(\is_string($param->var->name), 'Function parameter name should be an identifier'); |
| 161 | 167 | |
| 162 | 168 | $this->parameters[$line][$param->var->name][] = $prototype; |
@@ -166,11 +172,14 @@ discard block |
||
| 166 | 172 | return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN; |
| 167 | 173 | } |
| 168 | 174 | |
| 169 | - if ($node instanceof ClassConst) { |
|
| 175 | + if ($node instanceof ClassConst) |
|
| 176 | + { |
|
| 170 | 177 | $class = $this->fqn(); |
| 171 | 178 | |
| 172 | - foreach ($this->parse($node->attrGroups) as $prototype) { |
|
| 173 | - foreach ($node->consts as $const) { |
|
| 179 | + foreach ($this->parse($node->attrGroups) as $prototype) |
|
| 180 | + { |
|
| 181 | + foreach ($node->consts as $const) |
|
| 182 | + { |
|
| 174 | 183 | $this->constants[$class][$this->name($const->name)][] = $prototype; |
| 175 | 184 | } |
| 176 | 185 | } |
@@ -178,11 +187,14 @@ discard block |
||
| 178 | 187 | return NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN; |
| 179 | 188 | } |
| 180 | 189 | |
| 181 | - if ($node instanceof Property) { |
|
| 190 | + if ($node instanceof Property) |
|
| 191 | + { |
|
| 182 | 192 | $class = $this->fqn(); |
| 183 | 193 | |
| 184 | - foreach ($this->parse($node->attrGroups) as $prototype) { |
|
| 185 | - foreach ($node->props as $property) { |
|
| 194 | + foreach ($this->parse($node->attrGroups) as $prototype) |
|
| 195 | + { |
|
| 196 | + foreach ($node->props as $property) |
|
| 197 | + { |
|
| 186 | 198 | $this->properties[$class][$this->name($property->name)][] = $prototype; |
| 187 | 199 | } |
| 188 | 200 | } |
@@ -195,27 +207,31 @@ discard block |
||
| 195 | 207 | |
| 196 | 208 | public function leaveNode(Node $node): void |
| 197 | 209 | { |
| 198 | - if ($node instanceof Namespace_) { |
|
| 210 | + if ($node instanceof Namespace_) |
|
| 211 | + { |
|
| 199 | 212 | $this->context[AttributeParser::CTX_NAMESPACE] = ''; |
| 200 | 213 | |
| 201 | 214 | return; |
| 202 | 215 | } |
| 203 | 216 | |
| 204 | - if ($node instanceof ClassLike) { |
|
| 217 | + if ($node instanceof ClassLike) |
|
| 218 | + { |
|
| 205 | 219 | $this->context[AttributeParser::CTX_CLASS] = ''; |
| 206 | 220 | $this->context[AttributeParser::CTX_TRAIT] = ''; |
| 207 | 221 | |
| 208 | 222 | return; |
| 209 | 223 | } |
| 210 | 224 | |
| 211 | - if ($node instanceof FunctionLike) { |
|
| 225 | + if ($node instanceof FunctionLike) |
|
| 226 | + { |
|
| 212 | 227 | $this->context[AttributeParser::CTX_FUNCTION] = ''; |
| 213 | 228 | } |
| 214 | 229 | } |
| 215 | 230 | |
| 216 | 231 | private function updateContext(Node $node): void |
| 217 | 232 | { |
| 218 | - switch (true) { |
|
| 233 | + switch (true) |
|
| 234 | + { |
|
| 219 | 235 | case $node instanceof Namespace_: |
| 220 | 236 | $this->context[AttributeParser::CTX_NAMESPACE] = $this->name($node->name); |
| 221 | 237 | break; |
@@ -240,7 +256,8 @@ discard block |
||
| 240 | 256 | */ |
| 241 | 257 | private function name($name): string |
| 242 | 258 | { |
| 243 | - if ($name === null) { |
|
| 259 | + if ($name === null) |
|
| 260 | + { |
|
| 244 | 261 | return ''; |
| 245 | 262 | } |
| 246 | 263 | |
@@ -110,8 +110,8 @@ discard block |
||
| 110 | 110 | { |
| 111 | 111 | $eval = new ConstExprEvaluator($this->evaluator($file, $context)); |
| 112 | 112 | |
| 113 | - foreach ($groups as $group) { |
|
| 114 | - foreach ($group->attrs as $attr) { |
|
| 113 | + foreach ($groups as $group){ |
|
| 114 | + foreach ($group->attrs as $attr){ |
|
| 115 | 115 | $arguments = $this->parseAttributeArguments($attr, $file, $eval); |
| 116 | 116 | |
| 117 | 117 | yield new AttributePrototype($attr->name->toString(), $arguments); |
@@ -128,8 +128,8 @@ discard block |
||
| 128 | 128 | |
| 129 | 129 | private function read(string $file): string |
| 130 | 130 | { |
| 131 | - if (!\is_readable($file)) { |
|
| 132 | - throw new InvalidArgumentException('Unable to read file "' . $file . '"'); |
|
| 131 | + if (!\is_readable($file)){ |
|
| 132 | + throw new InvalidArgumentException('Unable to read file "'.$file.'"'); |
|
| 133 | 133 | } |
| 134 | 134 | |
| 135 | 135 | return \file_get_contents($file); |
@@ -138,7 +138,7 @@ discard block |
||
| 138 | 138 | private function evaluator(string $file, array $context): Closure |
| 139 | 139 | { |
| 140 | 140 | return static function (Expr $expr) use ($file, $context) { |
| 141 | - switch (\get_class($expr)) { |
|
| 141 | + switch (\get_class($expr)){ |
|
| 142 | 142 | case File::class: |
| 143 | 143 | return $file; |
| 144 | 144 | |
@@ -152,19 +152,19 @@ discard block |
||
| 152 | 152 | $namespace = $context[self::CTX_NAMESPACE] ?? ''; |
| 153 | 153 | $function = $context[self::CTX_FUNCTION] ?? ''; |
| 154 | 154 | |
| 155 | - return \ltrim($namespace . '\\' . $function, '\\'); |
|
| 155 | + return \ltrim($namespace.'\\'.$function, '\\'); |
|
| 156 | 156 | |
| 157 | 157 | case ClassConstFetch::class: |
| 158 | 158 | $constant = $expr->name->toString(); |
| 159 | 159 | $class = $expr->class->toString(); |
| 160 | 160 | |
| 161 | - if (\strtolower($constant) === 'class') { |
|
| 161 | + if (\strtolower($constant) === 'class'){ |
|
| 162 | 162 | return $class; |
| 163 | 163 | } |
| 164 | 164 | |
| 165 | - $definition = $class . '::' . $constant; |
|
| 165 | + $definition = $class.'::'.$constant; |
|
| 166 | 166 | |
| 167 | - if (!\defined($definition)) { |
|
| 167 | + if (!\defined($definition)){ |
|
| 168 | 168 | $exception = new ParseError(\sprintf(self::ERROR_BAD_CONSTANT, $definition)); |
| 169 | 169 | throw Exception::withLocation($exception, $file, $expr->getStartLine()); |
| 170 | 170 | } |
@@ -172,7 +172,7 @@ discard block |
||
| 172 | 172 | return \constant($definition); |
| 173 | 173 | } |
| 174 | 174 | |
| 175 | - if ($expr instanceof MagicConst) { |
|
| 175 | + if ($expr instanceof MagicConst){ |
|
| 176 | 176 | return $context[$expr->getName()] ?? ''; |
| 177 | 177 | } |
| 178 | 178 | |
@@ -190,13 +190,13 @@ discard block |
||
| 190 | 190 | $hasNamedArguments = false; |
| 191 | 191 | $arguments = []; |
| 192 | 192 | |
| 193 | - foreach ($attr->args as $argument) { |
|
| 193 | + foreach ($attr->args as $argument){ |
|
| 194 | 194 | $value = $eval->evaluateDirectly($argument->value); |
| 195 | 195 | |
| 196 | - if ($argument->name === null) { |
|
| 196 | + if ($argument->name === null){ |
|
| 197 | 197 | $arguments[] = $value; |
| 198 | 198 | |
| 199 | - if ($hasNamedArguments) { |
|
| 199 | + if ($hasNamedArguments){ |
|
| 200 | 200 | $exception = new ParseError(self::ERROR_NAMED_ARGUMENTS_ORDER); |
| 201 | 201 | throw Exception::withLocation($exception, $file, $argument->getStartLine()); |
| 202 | 202 | } |
@@ -110,8 +110,10 @@ discard block |
||
| 110 | 110 | { |
| 111 | 111 | $eval = new ConstExprEvaluator($this->evaluator($file, $context)); |
| 112 | 112 | |
| 113 | - foreach ($groups as $group) { |
|
| 114 | - foreach ($group->attrs as $attr) { |
|
| 113 | + foreach ($groups as $group) |
|
| 114 | + { |
|
| 115 | + foreach ($group->attrs as $attr) |
|
| 116 | + { |
|
| 115 | 117 | $arguments = $this->parseAttributeArguments($attr, $file, $eval); |
| 116 | 118 | |
| 117 | 119 | yield new AttributePrototype($attr->name->toString(), $arguments); |
@@ -128,7 +130,8 @@ discard block |
||
| 128 | 130 | |
| 129 | 131 | private function read(string $file): string |
| 130 | 132 | { |
| 131 | - if (!\is_readable($file)) { |
|
| 133 | + if (!\is_readable($file)) |
|
| 134 | + { |
|
| 132 | 135 | throw new InvalidArgumentException('Unable to read file "' . $file . '"'); |
| 133 | 136 | } |
| 134 | 137 | |
@@ -137,8 +140,10 @@ discard block |
||
| 137 | 140 | |
| 138 | 141 | private function evaluator(string $file, array $context): Closure |
| 139 | 142 | { |
| 140 | - return static function (Expr $expr) use ($file, $context) { |
|
| 141 | - switch (\get_class($expr)) { |
|
| 143 | + return static function (Expr $expr) use ($file, $context) |
|
| 144 | + { |
|
| 145 | + switch (\get_class($expr)) |
|
| 146 | + { |
|
| 142 | 147 | case File::class: |
| 143 | 148 | return $file; |
| 144 | 149 | |
@@ -158,13 +163,15 @@ discard block |
||
| 158 | 163 | $constant = $expr->name->toString(); |
| 159 | 164 | $class = $expr->class->toString(); |
| 160 | 165 | |
| 161 | - if (\strtolower($constant) === 'class') { |
|
| 166 | + if (\strtolower($constant) === 'class') |
|
| 167 | + { |
|
| 162 | 168 | return $class; |
| 163 | 169 | } |
| 164 | 170 | |
| 165 | 171 | $definition = $class . '::' . $constant; |
| 166 | 172 | |
| 167 | - if (!\defined($definition)) { |
|
| 173 | + if (!\defined($definition)) |
|
| 174 | + { |
|
| 168 | 175 | $exception = new ParseError(\sprintf(self::ERROR_BAD_CONSTANT, $definition)); |
| 169 | 176 | throw Exception::withLocation($exception, $file, $expr->getStartLine()); |
| 170 | 177 | } |
@@ -172,7 +179,8 @@ discard block |
||
| 172 | 179 | return \constant($definition); |
| 173 | 180 | } |
| 174 | 181 | |
| 175 | - if ($expr instanceof MagicConst) { |
|
| 182 | + if ($expr instanceof MagicConst) |
|
| 183 | + { |
|
| 176 | 184 | return $context[$expr->getName()] ?? ''; |
| 177 | 185 | } |
| 178 | 186 | |
@@ -190,13 +198,16 @@ discard block |
||
| 190 | 198 | $hasNamedArguments = false; |
| 191 | 199 | $arguments = []; |
| 192 | 200 | |
| 193 | - foreach ($attr->args as $argument) { |
|
| 201 | + foreach ($attr->args as $argument) |
|
| 202 | + { |
|
| 194 | 203 | $value = $eval->evaluateDirectly($argument->value); |
| 195 | 204 | |
| 196 | - if ($argument->name === null) { |
|
| 205 | + if ($argument->name === null) |
|
| 206 | + { |
|
| 197 | 207 | $arguments[] = $value; |
| 198 | 208 | |
| 199 | - if ($hasNamedArguments) { |
|
| 209 | + if ($hasNamedArguments) |
|
| 210 | + { |
|
| 200 | 211 | $exception = new ParseError(self::ERROR_NAMED_ARGUMENTS_ORDER); |
| 201 | 212 | throw Exception::withLocation($exception, $file, $argument->getStartLine()); |
| 202 | 213 | } |
@@ -116,7 +116,7 @@ discard block |
||
| 116 | 116 | bool $secure = false, |
| 117 | 117 | bool $httpOnly = true, |
| 118 | 118 | ?string $sameSite = null |
| 119 | - ) { |
|
| 119 | + ){ |
|
| 120 | 120 | $this->name = $name; |
| 121 | 121 | $this->value = $value; |
| 122 | 122 | $this->lifetime = $lifetime; |
@@ -221,30 +221,30 @@ discard block |
||
| 221 | 221 | */ |
| 222 | 222 | public function createHeader(): string |
| 223 | 223 | { |
| 224 | - $header = [rawurlencode($this->name) . '=' . rawurlencode((string)$this->value)]; |
|
| 224 | + $header = [rawurlencode($this->name).'='.rawurlencode((string)$this->value)]; |
|
| 225 | 225 | |
| 226 | - if ($this->lifetime !== null) { |
|
| 227 | - $header[] = 'Expires=' . gmdate(DateTime::COOKIE, $this->getExpires()); |
|
| 226 | + if ($this->lifetime !== null){ |
|
| 227 | + $header[] = 'Expires='.gmdate(DateTime::COOKIE, $this->getExpires()); |
|
| 228 | 228 | $header[] = "Max-Age={$this->lifetime}"; |
| 229 | 229 | } |
| 230 | 230 | |
| 231 | - if (!empty($this->path)) { |
|
| 231 | + if (!empty($this->path)){ |
|
| 232 | 232 | $header[] = "Path={$this->path}"; |
| 233 | 233 | } |
| 234 | 234 | |
| 235 | - if (!empty($this->domain)) { |
|
| 235 | + if (!empty($this->domain)){ |
|
| 236 | 236 | $header[] = "Domain={$this->domain}"; |
| 237 | 237 | } |
| 238 | 238 | |
| 239 | - if ($this->secure) { |
|
| 239 | + if ($this->secure){ |
|
| 240 | 240 | $header[] = 'Secure'; |
| 241 | 241 | } |
| 242 | 242 | |
| 243 | - if ($this->httpOnly) { |
|
| 243 | + if ($this->httpOnly){ |
|
| 244 | 244 | $header[] = 'HttpOnly'; |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | - if ($this->sameSite->get() !== null) { |
|
| 247 | + if ($this->sameSite->get() !== null){ |
|
| 248 | 248 | $header[] = "SameSite={$this->sameSite->get()}"; |
| 249 | 249 | } |
| 250 | 250 | |
@@ -258,7 +258,7 @@ discard block |
||
| 258 | 258 | */ |
| 259 | 259 | public function getExpires(): ?int |
| 260 | 260 | { |
| 261 | - if ($this->lifetime === null) { |
|
| 261 | + if ($this->lifetime === null){ |
|
| 262 | 262 | return null; |
| 263 | 263 | } |
| 264 | 264 | |
@@ -223,28 +223,34 @@ discard block |
||
| 223 | 223 | { |
| 224 | 224 | $header = [rawurlencode($this->name) . '=' . rawurlencode((string)$this->value)]; |
| 225 | 225 | |
| 226 | - if ($this->lifetime !== null) { |
|
| 226 | + if ($this->lifetime !== null) |
|
| 227 | + { |
|
| 227 | 228 | $header[] = 'Expires=' . gmdate(DateTime::COOKIE, $this->getExpires()); |
| 228 | 229 | $header[] = "Max-Age={$this->lifetime}"; |
| 229 | 230 | } |
| 230 | 231 | |
| 231 | - if (!empty($this->path)) { |
|
| 232 | + if (!empty($this->path)) |
|
| 233 | + { |
|
| 232 | 234 | $header[] = "Path={$this->path}"; |
| 233 | 235 | } |
| 234 | 236 | |
| 235 | - if (!empty($this->domain)) { |
|
| 237 | + if (!empty($this->domain)) |
|
| 238 | + { |
|
| 236 | 239 | $header[] = "Domain={$this->domain}"; |
| 237 | 240 | } |
| 238 | 241 | |
| 239 | - if ($this->secure) { |
|
| 242 | + if ($this->secure) |
|
| 243 | + { |
|
| 240 | 244 | $header[] = 'Secure'; |
| 241 | 245 | } |
| 242 | 246 | |
| 243 | - if ($this->httpOnly) { |
|
| 247 | + if ($this->httpOnly) |
|
| 248 | + { |
|
| 244 | 249 | $header[] = 'HttpOnly'; |
| 245 | 250 | } |
| 246 | 251 | |
| 247 | - if ($this->sameSite->get() !== null) { |
|
| 252 | + if ($this->sameSite->get() !== null) |
|
| 253 | + { |
|
| 248 | 254 | $header[] = "SameSite={$this->sameSite->get()}"; |
| 249 | 255 | } |
| 250 | 256 | |
@@ -258,7 +264,8 @@ discard block |
||
| 258 | 264 | */ |
| 259 | 265 | public function getExpires(): ?int |
| 260 | 266 | { |
| 261 | - if ($this->lifetime === null) { |
|
| 267 | + if ($this->lifetime === null) |
|
| 268 | + { |
|
| 262 | 269 | return null; |
| 263 | 270 | } |
| 264 | 271 | |