Class Kitab\Compiler\IntermediateRepresentation\Method
class Method
{
public function __construct(string $name);
public function __toString(): string;
}
A method intermediate representation.
A method is a function inside a class. Contrary to a function, it receives
an implicit $this
argument representing the object (class instance),
except for static method. Just like a function, it has zero or many inputs,
and zero or one output. Each input is represented by a
Kitab\Compiler\IntermediateRepresentation\Parameter
instance, while the
output is represented by a Kitab\Compiler\IntermediateRepresentation\Type
instance. A method also has a visiblity, can be abstract (if the class is
abstract), and can be final (cannot be overriden by a child class).
Examples
In this example, a new method f
is created with 1 input: int $x
, and
1 output: int
.
$typeInt = new Kitab\Compiler\IntermediateRepresentation\Type();
$typeInt->name = 'int';
$input1 = new Kitab\Compiler\IntermediateRepresentation\Parameter('x');
$input1->type = $typeInt;
$output = $typeInt;
$method = new Kitab\Compiler\IntermediateRepresentation\Method('f');
$method->inputs[] = $input1;
$method->output = $output;
Constants
public const VISIBILITY_PUBLIC = 0;
-
Represent a public constant.
public const VISIBILITY_PROTECTED = 1;
-
Represent a protected constant.
public const VISIBILITY_PRIVATE = 2;
-
Represent a private constant.
Attributes
public $lineStart = 0;
-
Unsigned integer representing where the method declaration starts in the file. The file can be retrieved on the class containing this method.
public $lineEnd = 0;
-
Unsigned integer representing where the entity declaration ends in the file. The file can retrieved on the class containing this method.
public $visibility = self::VISIBILITY_PUBLIC;
-
The visibility of the method, represented by the
self::VISIBILITY_*
constants. public $static = false;
-
Represent whether the method is static or not.
A static method does not receive the implicit
$this
argument representing the current object. public $abstract = false;
-
Represent whether the method is abstract or not.
An abstract method does not an implementation (body), it only provides a signature (inputs and output). If at least one method is abstract, the whole class must be marked as abstract.
public $final = false;
-
Represent whether the method is final or not.
A final method cannot be overriden in a child class.
public $name
-
The name of the method.
public $inputs = [];
-
Collection of
Kitab\Compiler\IntermediateRepresentation\Parameter
instances. public $output = null;
-
An output is a
Kitab\Compiler\IntermediateRepresentation\Type
instance if any. public $documentation = null;
-
Associated documentation of the entity as an instance of
Kitab\Compiler\IntermediateRepresentation\Documentation
.
Methods
-
public function __construct(string $name)
-
Allocate a new method with a name. This is the only mandatory information.
-
public function __toString(): string
-
Transform the intermediate representation into its PHP representation.
The original formatting is not kept. The applied formatting is design for Kitab.