Skip to content
USAMI Kenta edited this page Nov 2, 2016 · 3 revisions

Teto Objectsystem

Quick...? Start

<?php
namespace MyApp;

final class Book
{
    /** @var string */
    public $title;
    /** @var \MyApp\Author[] */
    public $authors;
    /** @var \MyApp\ISBN */
    public $isbn;
    /** @var string */
    public $lang; // expects en|fr|zh|ru|es|ar
}

You can write this code instead of as follows.

<?php
namespace MyApp;

/**
 * @property string          $title
 * @property \MyApp\Author[] $authors
 * @property \MyApp\ISBN     $isbn
 * @property string          $lang
 */
final class Book
{
    use \Teto\Object\TypedProperty;

    protected static $property_types = [
        'title'   => 'string',
        'authors' => 'MyApp\Author[]',
        'isbn'    => '?MyApp\ISBN',
        'lang'    => 'enum',
    ];

    protected static $enum_values = [
        'lang' => ['en', 'fr', 'zh', 'ru', 'es', 'ar'],
    ];
}
Clone this wiki locally