XHP: Methods
Remember, all XHP Objects derive from the XHPRoot
interface and an object that implements XHPRoot
has some public methods that can be called.
XHP Object Methods
Method | Description |
---|---|
appendChild(mixed $child): this |
Adds $child to the end of the XHP object's array of children. If $child is an array, each item in the array will be appended. |
categoryOf(string $cat): bool |
Returns whether the XHP object belongs to the category named $cat |
getAttribute(string $name): mixed |
Returns the value of the XHP object's attribute named $name . If the attribute is not set, null is returned, unless the attribute is required, in which case XHPAttributeRequiredException is thrown. If the attribute is not declared or does not exist, then XHPAttributeNotSupportedException is thrown. If the attribute you are reading is statically known, use $this->:name style syntax instead for better typechecker coverage. |
getAttributes(): Map<string, mixed> |
Returns the XHP object's array of attributes, as a cloned copy. |
getChildren(?string $selector = null): Vector<XHPChild> |
Returns the XHP object's children. If $selector is null , all children are returned. If $selector starts with % , all children belonging to the category named by $selector are returned. Otherwise, all children that are an instance of the class named by $selector are returned. |
getFirstChild(?string $selector = null):): ?XHPChild |
Returns the XHP object's first child. If $selector is null , the true first child is returned. Otherwise, the first child that matches $selector (or null ) is returned. |
getLastChild(?string $selector = null):): ?XHPChild |
Returns the XHP object's last child. If $selector is null , the true last child is returned. Otherwise, the last child that matches $selector (or null ) is returned. |
isAttributeSet(string $name): bool |
Returns whether the attribute with name $name is set. |
prependChild(mixed $child): this |
Adds $child to the beginning of the XHP object's array of children. If $child is an array , each item in the array will be appended. |
replaceChildren(...): this |
Replaces all the children of this XHP Object with the variable number of children passed to this method. |
setAttribute(string $name, mixed $val): this |
Sets the value of the XHP object's attribute named $name . The value will be checked against the attribute's type, and if they don't match, XHPInvalidAttributeException is thrown. If the attribute is not declared or does not exist, then XHPAttributeNotSupportedException is thrown. |
setAttributes(KeyedTraversable<string, mixed> $attrs): this |
Replaces the XHP object's array of attributes with $attrs . Same errors can apply as setAttribute() . |
require __DIR__."/../../../../vendor/hh_autoload.php";
function xhp_object_methods_build_list(Vector<string> $names): XHPRoot {
$list = <ul id="names" />;
foreach ($names as $name) {
$list->appendChild(<li>{$name}</li>);
}
return $list;
}
<<__EntryPoint>>
function xhp_object_methods_run(): void {
$names = Vector {'Sara', 'Fred', 'Josh', 'Scott', 'Paul', 'David', 'Matthew'};
$list = xhp_object_methods_build_list($names);
foreach ($list->getChildren() as $child) {
/* HH_FIXME[4067] implicit __toString() is now deprecated */
echo <ul>{$child}</ul>."\n";
}
/* HH_FIXME[4067] implicit __toString() is now deprecated */
echo <ul>{$list->getFirstChild()}</ul>."\n";
/* HH_FIXME[4067] implicit __toString() is now deprecated */
echo <ul>{$list->getLastChild()}</ul>."\n";
foreach ($list->getAttributes() as $attr) {
/* HH_FIXME[4067] implicit __toString() is now deprecated */
echo <ul><li>{(string)$attr}</li></ul>."\n";
}
/* HH_FIXME[4067] implicit __toString() is now deprecated */
echo <ul><li>{$list->getAttribute('id') as string}</li></ul>."\n";
}
<ul><li>Sara</li></ul>
<ul><li>Fred</li></ul>
<ul><li>Josh</li></ul>
<ul><li>Scott</li></ul>
<ul><li>Paul</li></ul>
<ul><li>David</li></ul>
<ul><li>Matthew</li></ul>
<ul><li>Sara</li></ul>
<ul><li>Matthew</li></ul>
<ul><li>names</li></ul>
<ul><li>names</li></ul>