X7ROOT File Manager
Current Path:
/home/prisjneg/public_html/vendor/sebastian/type/src/type
home
/
prisjneg
/
public_html
/
vendor
/
sebastian
/
type
/
src
/
type
/
📁
..
📄
CallableType.php
(4.2 KB)
📄
FalseType.php
(880 B)
📄
GenericObjectType.php
(1.02 KB)
📄
IntersectionType.php
(2.73 KB)
📄
IterableType.php
(1.47 KB)
📄
MixedType.php
(794 B)
📄
NeverType.php
(714 B)
📄
NullType.php
(791 B)
📄
ObjectType.php
(1.53 KB)
📄
SimpleType.php
(1.8 KB)
📄
StaticType.php
(1.43 KB)
📄
TrueType.php
(875 B)
📄
Type.php
(4.17 KB)
📄
UnionType.php
(2.89 KB)
📄
UnknownType.php
(779 B)
📄
VoidType.php
(710 B)
Editing: IntersectionType.php
<?php declare(strict_types=1); /* * This file is part of sebastian/type. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace SebastianBergmann\Type; use function assert; use function count; use function implode; use function in_array; use function sort; final class IntersectionType extends Type { /** * @psalm-var non-empty-list<Type> */ private array $types; /** * @throws RuntimeException */ public function __construct(Type ...$types) { $this->ensureMinimumOfTwoTypes(...$types); $this->ensureOnlyValidTypes(...$types); $this->ensureNoDuplicateTypes(...$types); $this->types = $types; } public function isAssignable(Type $other): bool { return $other->isObject(); } public function asString(): string { return $this->name(); } public function name(): string { $types = []; foreach ($this->types as $type) { $types[] = $type->name(); } sort($types); return implode('&', $types); } public function allowsNull(): bool { return false; } /** * @psalm-assert-if-true IntersectionType $this */ public function isIntersection(): bool { return true; } /** * @psalm-return non-empty-list<Type> */ public function types(): array { return $this->types; } /** * @throws RuntimeException */ private function ensureMinimumOfTwoTypes(Type ...$types): void { if (count($types) < 2) { throw new RuntimeException( 'An intersection type must be composed of at least two types' ); } } /** * @throws RuntimeException */ private function ensureOnlyValidTypes(Type ...$types): void { foreach ($types as $type) { if (!$type->isObject()) { throw new RuntimeException( 'An intersection type can only be composed of interfaces and classes' ); } } } /** * @throws RuntimeException */ private function ensureNoDuplicateTypes(Type ...$types): void { $names = []; foreach ($types as $type) { assert($type instanceof ObjectType); $classQualifiedName = $type->className()->qualifiedName(); if (in_array($classQualifiedName, $names, true)) { throw new RuntimeException('An intersection type must not contain duplicate types'); } $names[] = $classQualifiedName; } } }
Upload File
Create Folder