Removed Type class.
This commit is contained in:
parent
1c2058e199
commit
06f0ba27bb
3 changed files with 1 additions and 176 deletions
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
0.2311.91257
|
||||
0.2311.91259
|
||||
|
|
126
src/Type.php
126
src/Type.php
|
@ -1,126 +0,0 @@
|
|||
<?php
|
||||
// Type.php
|
||||
// Created: 2021-04-26
|
||||
// Updated: 2022-02-28
|
||||
|
||||
namespace Index;
|
||||
|
||||
use ReflectionClass;
|
||||
use RuntimeException;
|
||||
|
||||
final class Type {
|
||||
/**
|
||||
* Boolean type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const BOOL = 'boolean';
|
||||
|
||||
/**
|
||||
* Integer type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const INTEGER = 'integer';
|
||||
|
||||
/**
|
||||
* Floating point type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const FLOAT = 'double';
|
||||
|
||||
/**
|
||||
* String type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const STRING = 'string';
|
||||
|
||||
/**
|
||||
* Array type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const ARRAY = 'array';
|
||||
|
||||
/**
|
||||
* Object type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const OBJECT = 'object';
|
||||
|
||||
/**
|
||||
* Resource type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const RESOURCE = 'resource';
|
||||
|
||||
/**
|
||||
* Closed resource type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const CLOSED_RESOURCE = 'resource (closed)';
|
||||
|
||||
/**
|
||||
* NULL type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const NULL = 'NULL';
|
||||
|
||||
/**
|
||||
* Unknown type id.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public const UNKNOWN = 'unknown type';
|
||||
|
||||
/**
|
||||
* Gets the default value for this type.
|
||||
*
|
||||
* @return mixed Default value for the given base type.
|
||||
*/
|
||||
public static function default(string $type): mixed {
|
||||
switch($type) {
|
||||
case self::BOOL:
|
||||
return false;
|
||||
case self::INTEGER:
|
||||
return 0;
|
||||
case self::FLOAT:
|
||||
return 0.0;
|
||||
case self::STRING:
|
||||
return '';
|
||||
case self::ARRAY:
|
||||
return [];
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a list of all class names this Type inherits.
|
||||
*
|
||||
* @param string|object $target Target object.
|
||||
* @return array Array containing the names.
|
||||
*/
|
||||
public static function classTree(string|object $target): array {
|
||||
if(is_object($target))
|
||||
$target = get_class($target);
|
||||
|
||||
$tree = [];
|
||||
$classInfo = new ReflectionClass($target);
|
||||
|
||||
foreach($classInfo->getInterfaceNames() as $interface)
|
||||
$tree[] = $interface;
|
||||
|
||||
do {
|
||||
$tree[] = $classInfo->getName();
|
||||
} while(($classInfo = $classInfo->getParentClass()) !== false);
|
||||
|
||||
return $tree;
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
<?php
|
||||
// TypeTest.php
|
||||
// Created: 2021-04-27
|
||||
// Updated: 2022-02-28
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Index\AString;
|
||||
use Index\Type;
|
||||
use Index\XArray;
|
||||
|
||||
/**
|
||||
* @covers Type
|
||||
*/
|
||||
final class TypeTest extends TestCase {
|
||||
public function testDefaults(): void {
|
||||
$this->assertEquals(Type::default(Type::BOOL), false);
|
||||
$this->assertEquals(Type::default(Type::INTEGER), 0);
|
||||
$this->assertEquals(Type::default(Type::FLOAT), 0.0);
|
||||
$this->assertEquals(Type::default(Type::STRING), '');
|
||||
$this->assertEquals(Type::default(Type::ARRAY), []);
|
||||
$this->assertEquals(Type::default(Type::OBJECT), null);
|
||||
$this->assertEquals(Type::default(Type::RESOURCE), null);
|
||||
$this->assertEquals(Type::default(Type::CLOSED_RESOURCE), null);
|
||||
$this->assertEquals(Type::default(Type::NULL), null);
|
||||
$this->assertEquals(Type::default(Type::UNKNOWN), null);
|
||||
}
|
||||
|
||||
public function testClassTree(): void {
|
||||
$array1 = Type::classTree(new AString('the'));
|
||||
$array2 = [
|
||||
'Index\\IString',
|
||||
'Stringable',
|
||||
'Traversable',
|
||||
'Index\\Serialisation\\IBencodeSerialisable',
|
||||
'Index\\IEquatable',
|
||||
'Index\\ICloneable',
|
||||
'Index\\IComparable',
|
||||
'JsonSerializable',
|
||||
'IteratorAggregate',
|
||||
'Countable',
|
||||
'ArrayAccess',
|
||||
'Index\\AString',
|
||||
];
|
||||
|
||||
$this->assertTrue(XArray::sequenceEquals($array1, $array2));
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue