Class Kitab\Compiler\IntermediateRepresentation\Class_

class Class_ extends Kitab\Compiler\IntermediateRepresentation\Entity
{
    pub fn __construct(string $name);
    pub fn getMethods(): array;
}

A class intermediate representation.

A class is one of the major entity in PHP. It exposes constants, attributes, and methods, in addition to some properties (like final, abstract etc.). A class can inherit from one other class, and can implement one or more interfaces.

Examples

In this example, a new final class C is built, with 2 attributes: foo and bar, and one method: f.

$class               = new Kitab\Compiler\IntermediateRepresentation\Class_('C');
$class->attributes[] = new Kitab\Compiler\IntermediateRepresentation\Attribute('foo');
$class->attributes[] = new Kitab\Compiler\IntermediateRepresentation\Attribute('bar');
$class->methods[]    = new Kitab\Compiler\IntermediateRepresentation\Method('f');

Constants

pub const TYPE = 'class';

Type of the entity. See parent.

Attributes

pub $final = false;

Represent whether the class is final or not.

A final class cannot be extended. It is a child of the inheritance hierarchy.

pub $abstract = false;

Represent whether the class is abstract or not.

An abstract class cannot be instanciated. In addition, some methods can be marked as abstract too. Such methods have no implementations (bodies), they only provide a signature (inputs and output).

pub $parent = null;

Fully-qualified name of the class it extends if any.

pub $interfaces = [];

Fully-qualified names of the interfaces it implements if any.

pub $constants = [];

Collection of Kitab\Compiler\IntermediateRepresentation\Constant instances.

pub $attributes = [];

Collection of Kitab\Compiler\IntermediateRepresentation\Attribute instances.

pub $methods = [];

Collection of Kitab\Compiler\IntermediateRepresentation\Method instances.

Methods

pub fn __construct(string $name)

Allocate a class with a fully-qualified name. This is the only mandatory information.

pub fn getMethods(): array

Return all methods declared for this entity.

Interfaces

interface Kitab\Compiler\IntermediateRepresentation\HasMethods