build/extracted-examples/guides/hack/07-traits-and-interfaces/04-trait-and-interface-requirements/interface-good.hack (30 lines of code) (raw):

// WARNING: Contains some auto-generated boilerplate code, see: // HHVM\UserDocumentation\MarkdownExt\ExtractedCodeBlocks\FilterBase::addBoilerplate namespace HHVM\UserDocumentation\Guides\Hack\TraitsAndInterfaces\TraitAndInterfaceRequirements\InterfaceGood; abstract class Machine { public function openDoors(): void { return; } public function closeDoors(): void { return; } } interface Fliers { require extends Machine; public function fly(): bool; } class AirBus extends Machine implements Fliers { public function takeOff(): bool { $this->openDoors(); $this->closeDoors(); return $this->fly(); } public function fly(): bool { return true; } } <<__EntryPoint>> function run(): void { \init_docs_autoloader(); $ab = new AirBus(); \var_dump($ab); \var_dump($ab->takeOff()); }