getPhobjectClassConstant('EXTENSIONKEY'); } final public function setViewer($viewer) { $this->viewer = $viewer; return $this; } final public function getViewer() { return $this->viewer; } abstract public function supportsObject($object); abstract public function newExportFields(); abstract public function newExportData(array $objects); final public static function getAllExtensions() { return id(new PhutilClassMapQuery()) ->setAncestorClass(self::class) ->setUniqueMethod('getExtensionKey') ->execute(); } }