PHP code example of type-lang / types

1. Go to this page and download the library: Download type-lang/types library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

type-lang / types example snippets


use TypeLang\Type\Identifier;
use TypeLang\Type\Name;

$id = Identifier::createFromString('non-empty-string');
$id->value;     // 'non-empty-string'
$id->isVirtual; // true  (contains "-", e.g. "array-key", "positive-int")
$id->isBuiltin; // false (e.g. "int", "bool", "null")
$id->isSpecial; // false (e.g. "self", "static", "parent")

$name = Name::createFromString('\TypeLang\Type\Node');
$name->isFullyQualified; // true
$name->first->value;     // 'TypeLang'
$name->last->value;      // 'Node'

use TypeLang\Type\Name;
use TypeLang\Type\NamedTypeNode;
use TypeLang\Type\NullableTypeNode;
use TypeLang\Type\UnionTypeNode;
use TypeLang\Type\TemplateArgumentListNode;
use TypeLang\Type\TemplateArgumentNode;

// int
new NamedTypeNode(Name::createFromString('int'));

// ?string
new NullableTypeNode(new NamedTypeNode(Name::createFromString('string')));

// int|string|null  (nested unions of the same kind are flattened)
new UnionTypeNode(
    new NamedTypeNode(Name::createFromString('int')),
    new NamedTypeNode(Name::createFromString('string')),
    new NamedTypeNode(Name::createFromString('null')),
);

// array<string, int>
new NamedTypeNode(
    name: Name::createFromString('array'),
    arguments: new TemplateArgumentListNode([
        new TemplateArgumentNode(new NamedTypeNode(Name::createFromString('string'))),
        new TemplateArgumentNode(new NamedTypeNode(Name::createFromString('int'))),
    ]),
);

count($list);   // number of items
$list[0];       // item by offset
$list->first;   // first item
$list->last;    // last item
foreach ($list as $item) { /* ... */ }