Key Concepts

Components

A component is an instance of TComponent or its child class. The base class TComponent implements the mechanism of component properties and events.

Component Properties

A component property can be viewed as a public variable describing a specific aspect of the component, such as the background color, the font size, etc. A property is defined by the existence of a getter and/or a setter method in the component class. For example, in TControl, we have

class TControl extends TComponent {
    public function getID() {
        ...
    }
    public function setID($value) {
        ...
    }
}
This defines a property named ID. Reading the property (e.g. echo $component->ID;) is equivalent to invoking the getter method (e.g. echo $component->getID();); and writing the property (e.g. $component->ID='Button';) is equivalent to invoking the setter method (e.g. $component->setID('Button');).

A property is read-only if it has a getter method but no setter method. Since PHP method names are case-insensitive, property names are also case-insensitive. A component class inherits all its ancestor classes' properties.

Component Events

Component events are special properties that take method names as their values. Attaching (setting) a method to an event will hook up the method to the places at which the event is raised. Therefore, the behavior of a component can be modified in a way that may not be foreseen during the development of the component.

A component event is defined by the existence of an on-method. For example, in TButton, we have

class TButton extends TWebControl {
    public function onClick($param) {
        ...
    }
}
This defines an event named Click, and a handler can be attached to the event using one of the following ways,
$button->Click=$callback;
$button->Click->add($callback);
$button->Click[]=$callback;
$button->attachEventHandler('Click',$callback);
where $callback refers to a valid PHP callback (e.g. a function name, a class method array($object,'method'), etc.)

Controls

A control is an instance of class TControl or its subclass. A control is a component defined in addition with user interface. The base class TControl defines the parent-child relationship among controls which reflects the containment relationship among user interface elements.

Parent-Child Relationship

A parent control is in charge of the state transition of its child controls. The rendering result of the child controls are usually used to compose the parent control's presentation.

The parent-child relationship is usually established by the framework via templates. In code, you may explicitly specify a control as a child of another using the following method,

$parent->Controls->add($child);
where the property Controls refers to the child control collection of the parent.

Pages

Pages are top-most controls that have no parent (you may consider application as their container though). The presentation of pages are directly displayed to end-users.