XHP library 2.4.0

XHP is Facebooks extension to utilize XML fragments and structures directly within PHP source code. Which allows simpler document construction, processing, and sane variable interpolation without having to use DOM functions. It also permits to declare custom :xml:object classes for even quicker templating. Previous versions are available for Zend/PHP5.

Tags php hhvm c hack xml language-syntax extension developers
License MITL
State stable

Recent Releases

2.4.030 Sep 2017 14:05 minor feature: this release uses TypeAssert v3 instead of v2, allowing it to be used in new projects. this release splits the API for enabling/disabling validation into separate options for child validation and attribute validation. :xhp:: ENABLE_VALIDATION no longer exists. attribute validation is off by default; we aim to remove it completely from a future release. This will allow removing the dependency on TypeAssert in the future. The runtime validation isn't as useful now given that the typechecker validates attributes specified when instantiating XHP objects. The runtime validation is bad for performance. Keeping the runtime validation in sync with the typechecker has been a frequent source of.
2.2.413 Feb 2016 03:16 minor feature: Remove bogus assert Unneeded. Typechecker and tests happy. Needed for 3.12 as assert.active default has changed.
2.2.323 Dec 2015 03:16 minor feature: callable is undefined in Hack: 60a4141 . Update 91carriage/phpunit-hhi to versions that support assume_php-false (only affects --dev): 6788a34 . Exclude tests/ from release tarballs, including packagist installs of release versions: 7e9599a.
2.2.215 Jul 2015 16:05 minor feature: Add :picture. Allow arbitrary values for :input autocomplete attribute. Support num and arraykey attributes. Add minimum version of HHVM (3.6.0) to composer.json.
2.2.130 Jun 2015 03:25 minor feature: if an attribute is specified as callable, raise an exception that states it's unsupported in XHP-Lib =2.0 instead of the generic 'unknown attribute type' error. Support non-numeric values for :input min/max eg date or time.
2.0.117 Apr 2015 10:25 minor bugfix: Make second argument to getContext() optional. Improve performance of AwaitableXHP. Add 'init.php' for people who choose not to use Composer. Small changes to make it pass the typechecker in the upcoming HHVM 3.7. Updated patent grant (https://code.facebook.com/posts/1639473982937255/updating-our-open-source-patent-grant/).
2.0.007 Apr 2015 10:25 major feature: Convert to Hack. The 1.x release series is still supported for users of PHP5. Added AwaitableXHP ; this allows you to build efficient XHP components where data fetching requirements are an implementation detail instead of part of the API they present. Attribute coercion is now much stricter, and raises an E_DEPRECATED. In a future release, the Hack typechecker will consider any coercion to be an error, and XHP-Lib will throw an exception. Added XHPUnsafeRenderable and XHPAlwaysValidChild interfaces, making it easier to include markup from other sources in an XHP tree. See MIGRATING.md for more information. Split out getID() , addClass() , transferAttributes() and friends from :x:html-element to a new XHPHelpers trait, which implements the new HasXHPHelpers interface. Add new XHPRoot interface, implemented by :x:primitive and :x:composable-element . This is the return type of render(). Removed Callable attribute type, as this is not supported by Hack. Functions that dealt with arrays (eg getAttributes() ) now use Vector, Map, or Set. Added reflection; ReflectionXHPClass is the main entry point.