From cb321c4225462df13790e7198179a6e1406cd289 Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Tue, 17 Jun 2025 19:00:02 +0200 Subject: [PATCH] Misc PhpDoc additions or improvements Summary: Side effect of stuff I've been poking and trying to understand what it may do. Test Plan: Check parameter and return types, e.g. via gettype() or get_class(). Reviewers: O1 Blessed Committers, mainframe98 Reviewed By: O1 Blessed Committers, mainframe98 Subscribers: mainframe98, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Differential Revision: https://we.phorge.it/D26100 --- .../conduit/method/ConduitAPIMethod.php | 18 ++++++++++ .../DiffusionCommitAcceptTransaction.php | 6 ++++ .../DiffusionCommitConcernTransaction.php | 6 ++++ .../DiffusionCommitResignTransaction.php | 6 ++++ .../DiffusionCommitVerifyTransaction.php | 6 ++++ .../flag/conduit/FlagConduitAPIMethod.php | 4 +++ .../conduit/FlagDeleteConduitAPIMethod.php | 4 +++ .../herald/action/HeraldAction.php | 7 ++++ src/applications/herald/field/HeraldField.php | 3 ++ .../PhabricatorSearchController.php | 6 ++++ .../PhabricatorApplicationSearchEngine.php | 17 ++++++++++ .../engine/PhabricatorSearchNgramEngine.php | 17 ++++++++++ ...PhabricatorApplicationSearchResultView.php | 3 ++ .../editor/PhabricatorSettingsEditEngine.php | 8 +++++ .../PhabricatorTypeaheadDatasource.php | 33 +++++++++++++++++-- .../field/PhabricatorDoubleExportField.php | 3 ++ .../field/PhabricatorEpochExportField.php | 3 ++ .../export/field/PhabricatorExportField.php | 3 ++ .../export/field/PhabricatorIDExportField.php | 3 ++ .../field/PhabricatorIntExportField.php | 3 ++ .../field/PhabricatorOptionExportField.php | 3 ++ ...PhabricatorCursorPagedPolicyAwareQuery.php | 6 ++++ src/view/AphrontTagView.php | 7 ++++ .../control/PhabricatorRemarkupControl.php | 6 ++++ src/view/layout/PhabricatorActionView.php | 4 +++ src/view/phui/PHUICrumbView.php | 4 +++ src/view/phui/PHUIInfoView.php | 7 ++++ src/view/phui/PHUILinkView.php | 4 +++ 28 files changed, 198 insertions(+), 2 deletions(-) diff --git a/src/applications/conduit/method/ConduitAPIMethod.php b/src/applications/conduit/method/ConduitAPIMethod.php index a711cfa85c..096c63fc9e 100644 --- a/src/applications/conduit/method/ConduitAPIMethod.php +++ b/src/applications/conduit/method/ConduitAPIMethod.php @@ -69,9 +69,20 @@ abstract class ConduitAPIMethod ->setContent($box_view); } + /** + * @return array Pairs of parameter name and their type + */ abstract protected function defineParamTypes(); + + /** + * @return string Human-readable text description of the return format, + * for example 'array | null' + */ abstract protected function defineReturnType(); + /** + * @return array Pairs of error code and the corresponding error message + */ protected function defineErrorTypes() { return array(); } @@ -94,10 +105,17 @@ abstract class ConduitAPIMethod return $types; } + /** + * @return string Human-readable text description of the return format, + * for example 'array | null' + */ public function getReturnType() { return $this->defineReturnType(); } + /** + * @return array Pairs of error code and the corresponding error message + */ public function getErrorTypes() { return $this->defineErrorTypes(); } diff --git a/src/applications/diffusion/xaction/DiffusionCommitAcceptTransaction.php b/src/applications/diffusion/xaction/DiffusionCommitAcceptTransaction.php index 9cd42eab36..ad849d3b17 100644 --- a/src/applications/diffusion/xaction/DiffusionCommitAcceptTransaction.php +++ b/src/applications/diffusion/xaction/DiffusionCommitAcceptTransaction.php @@ -14,10 +14,16 @@ final class DiffusionCommitAcceptTransaction return pht('This commit will be approved.'); } + /** + * @return string Transaction icon + */ public function getIcon() { return 'fa-check-circle-o'; } + /** + * @return string Transaction color + */ public function getColor() { return 'green'; } diff --git a/src/applications/diffusion/xaction/DiffusionCommitConcernTransaction.php b/src/applications/diffusion/xaction/DiffusionCommitConcernTransaction.php index 8f2744f21d..3a708c9999 100644 --- a/src/applications/diffusion/xaction/DiffusionCommitConcernTransaction.php +++ b/src/applications/diffusion/xaction/DiffusionCommitConcernTransaction.php @@ -14,10 +14,16 @@ final class DiffusionCommitConcernTransaction return pht('This commit will be returned to the author for consideration.'); } + /** + * @return string Transaction icon + */ public function getIcon() { return 'fa-times-circle-o'; } + /** + * @return string Transaction color + */ public function getColor() { return 'red'; } diff --git a/src/applications/diffusion/xaction/DiffusionCommitResignTransaction.php b/src/applications/diffusion/xaction/DiffusionCommitResignTransaction.php index 1f5a4b94b0..1297f8deb6 100644 --- a/src/applications/diffusion/xaction/DiffusionCommitResignTransaction.php +++ b/src/applications/diffusion/xaction/DiffusionCommitResignTransaction.php @@ -14,10 +14,16 @@ final class DiffusionCommitResignTransaction return pht('You will resign as an auditor for this commit.'); } + /** + * @return string Transaction icon + */ public function getIcon() { return 'fa-flag'; } + /** + * @return string Transaction color + */ public function getColor() { return 'orange'; } diff --git a/src/applications/diffusion/xaction/DiffusionCommitVerifyTransaction.php b/src/applications/diffusion/xaction/DiffusionCommitVerifyTransaction.php index f9f19f4290..d9f74ca953 100644 --- a/src/applications/diffusion/xaction/DiffusionCommitVerifyTransaction.php +++ b/src/applications/diffusion/xaction/DiffusionCommitVerifyTransaction.php @@ -19,10 +19,16 @@ final class DiffusionCommitVerifyTransaction return DiffusionCommitEditEngine::ACTIONGROUP_COMMIT; } + /** + * @return string Transaction icon + */ public function getIcon() { return 'fa-refresh'; } + /** + * @return string Transaction color + */ public function getColor() { return 'indigo'; } diff --git a/src/applications/flag/conduit/FlagConduitAPIMethod.php b/src/applications/flag/conduit/FlagConduitAPIMethod.php index 3b541cd79b..d3eab561ed 100644 --- a/src/applications/flag/conduit/FlagConduitAPIMethod.php +++ b/src/applications/flag/conduit/FlagConduitAPIMethod.php @@ -14,6 +14,10 @@ abstract class FlagConduitAPIMethod extends ConduitAPIMethod { $flag->attachHandle($handle); } + /** + * @param PhabricatorFlag $flag + * @return array + */ protected function buildFlagInfoDictionary($flag) { $color = $flag->getColor(); $uri = PhabricatorEnv::getProductionURI($flag->getHandle()->getURI()); diff --git a/src/applications/flag/conduit/FlagDeleteConduitAPIMethod.php b/src/applications/flag/conduit/FlagDeleteConduitAPIMethod.php index de6d98d7f0..408f05a9b4 100644 --- a/src/applications/flag/conduit/FlagDeleteConduitAPIMethod.php +++ b/src/applications/flag/conduit/FlagDeleteConduitAPIMethod.php @@ -29,6 +29,10 @@ final class FlagDeleteConduitAPIMethod extends FlagConduitAPIMethod { ); } + /** + * @param ConduitAPIRequest $request + * @return array|null + */ protected function execute(ConduitAPIRequest $request) { $id = $request->getValue('id'); $object = $request->getValue('objectPHID'); diff --git a/src/applications/herald/action/HeraldAction.php b/src/applications/herald/action/HeraldAction.php index 2e08f2ff9d..1f699d2100 100644 --- a/src/applications/herald/action/HeraldAction.php +++ b/src/applications/herald/action/HeraldAction.php @@ -20,11 +20,18 @@ abstract class HeraldAction extends Phobject { const DO_STANDARD_WRONG_RULE_TYPE = 'do.standard.wrong-rule-type'; const DO_STANDARD_FORBIDDEN = 'do.standard.forbidden'; + /** + * @return string Text of option in first dropdown of a Herald Action + */ abstract public function getHeraldActionName(); abstract public function supportsObject($object); abstract public function supportsRuleType($rule_type); abstract public function applyEffect($object, HeraldEffect $effect); + /** + * @return string|PhutilSafeHTML Description of the action performed by a + * Herald rule, shown under 'Take these actions...' on a Herald rule page + */ abstract public function renderActionDescription($value); public function getRequiredAdapterStates() { diff --git a/src/applications/herald/field/HeraldField.php b/src/applications/herald/field/HeraldField.php index f4cc9fd442..0dd8686f96 100644 --- a/src/applications/herald/field/HeraldField.php +++ b/src/applications/herald/field/HeraldField.php @@ -13,6 +13,9 @@ abstract class HeraldField extends Phobject { const STANDARD_PHID_BOOL = 'standard.phid.bool'; const STANDARD_PHID_NULLABLE = 'standard.phid.nullable'; + /** + * @return string Text of option in first dropdown of a Herald Condition + */ abstract public function getHeraldFieldName(); abstract public function getHeraldFieldValue($object); diff --git a/src/applications/search/controller/PhabricatorSearchController.php b/src/applications/search/controller/PhabricatorSearchController.php index 1f59cd766e..f52101bf3b 100644 --- a/src/applications/search/controller/PhabricatorSearchController.php +++ b/src/applications/search/controller/PhabricatorSearchController.php @@ -9,6 +9,9 @@ final class PhabricatorSearchController return true; } + /** + * @return PhabricatorStandardPageView|AphrontRedirectResponse + */ public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer(); $query = $request->getStr('query'); @@ -96,6 +99,9 @@ final class PhabricatorSearchController return $this->delegateToController($controller); } + /** + * @return AphrontSideNavFilterView + */ public function buildSideNavView($for_app = false) { $viewer = $this->getViewer(); diff --git a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php index 8c783a1378..5ba180aecb 100644 --- a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php +++ b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php @@ -36,6 +36,9 @@ abstract class PhabricatorApplicationSearchEngine extends Phobject { return $this; } + /** + * @return PhabricatorController + */ public function getController() { return $this->controller; } @@ -51,6 +54,10 @@ abstract class PhabricatorApplicationSearchEngine extends Phobject { return $controller->delegateToController($search); } + /** + * @return object|null Matching object (e.g. PhabricatorUser, PhamePost, or + * PhabricatorDashboardPanel), or null if no object matches. + */ public function newResultObject() { // We may be able to get this automatically if newQuery() is implemented. $query = $this->newQuery(); @@ -73,6 +80,10 @@ abstract class PhabricatorApplicationSearchEngine extends Phobject { return $this; } + /** + * @return PhabricatorUser + * @throws PhutilInvalidStateException + */ protected function requireViewer() { if (!$this->viewer) { throw new PhutilInvalidStateException('setViewer'); @@ -89,12 +100,18 @@ abstract class PhabricatorApplicationSearchEngine extends Phobject { return ($this->context == self::CONTEXT_PANEL); } + /** + * @param array $navigation_items + */ public function setNavigationItems(array $navigation_items) { assert_instances_of($navigation_items, 'PHUIListItemView'); $this->navigationItems = $navigation_items; return $this; } + /** + * @return array $navigation_items + */ public function getNavigationItems() { return $this->navigationItems; } diff --git a/src/applications/search/engine/PhabricatorSearchNgramEngine.php b/src/applications/search/engine/PhabricatorSearchNgramEngine.php index b029e6e060..78f15a4d00 100644 --- a/src/applications/search/engine/PhabricatorSearchNgramEngine.php +++ b/src/applications/search/engine/PhabricatorSearchNgramEngine.php @@ -3,20 +3,37 @@ final class PhabricatorSearchNgramEngine extends Phobject { + /** + * @param string $value + * @return array + */ public function tokenizeNgramString($value) { $value = trim($value, ' '); $value = preg_split('/\s+/u', $value); return $value; } + /** + * @param string $string + * @return array + */ public function getTermNgramsFromString($string) { return $this->getNgramsFromString($string, true); } + /** + * @param string $string + * @return array + */ public function getSubstringNgramsFromString($string) { return $this->getNgramsFromString($string, false); } + /** + * @param string $value + * @param bool $as_term + * @return array + */ private function getNgramsFromString($value, $as_term) { $value = phutil_utf8_strtolower($value); $tokens = $this->tokenizeNgramString($value); diff --git a/src/applications/search/view/PhabricatorApplicationSearchResultView.php b/src/applications/search/view/PhabricatorApplicationSearchResultView.php index 3576d5238e..d80fde4227 100644 --- a/src/applications/search/view/PhabricatorApplicationSearchResultView.php +++ b/src/applications/search/view/PhabricatorApplicationSearchResultView.php @@ -47,6 +47,9 @@ final class PhabricatorApplicationSearchResultView extends Phobject { return $this; } + /** + * @return PHUIInfoView + */ public function getInfoView() { return $this->infoView; } diff --git a/src/applications/settings/editor/PhabricatorSettingsEditEngine.php b/src/applications/settings/editor/PhabricatorSettingsEditEngine.php index a5ae9b3348..f20ab8f862 100644 --- a/src/applications/settings/editor/PhabricatorSettingsEditEngine.php +++ b/src/applications/settings/editor/PhabricatorSettingsEditEngine.php @@ -9,11 +9,19 @@ final class PhabricatorSettingsEditEngine private $profileURI; private $settingsPanel; + /** + * @param bool $is_self_edit True if the current viewer edits their own + * settings; false if someone else's (e.g. a bot account's settings). + */ public function setIsSelfEdit($is_self_edit) { $this->isSelfEdit = $is_self_edit; return $this; } + /** + * @return bool $is_self_edit True if the current viewer edits their own + * settings; false if someone else's (e.g. a bot account's settings). + */ public function getIsSelfEdit() { return $this->isSelfEdit; } diff --git a/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php b/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php index f0676425f9..2e01034c64 100644 --- a/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php +++ b/src/applications/typeahead/datasource/PhabricatorTypeaheadDatasource.php @@ -98,12 +98,22 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { return $this->phase; } + /** + * @return string A text URI consisting of '/typeahead/class/' followed by + * a datasource (e.g. 'PhabricatorProjectDatasource/') and optionally + * URI parameters (e.g. '?parameters=%7B%22autocomplete%22%3A1%7D') + */ public function getDatasourceURI() { $params = $this->newURIParameters(); $uri = new PhutilURI('/typeahead/class/'.get_class($this).'/', $params); return phutil_string_cast($uri); } + /** + * @return string|null A text URI consisting of '/typeahead/browse/' followed + * by a datasource (e.g. 'PhabricatorPeopleDatasource/') and optionally + * URI parameters. Returns null if not browsable. + */ public function getBrowseURI() { if (!$this->isBrowsable()) { return null; @@ -114,6 +124,10 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { return phutil_string_cast($uri); } + /** + * @return array Array with key 'parameters' and value consisting of JSON + * encoded parameters. + */ private function newURIParameters() { if (!$this->parameters) { return array(); @@ -126,8 +140,16 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { return $map; } + /** + * @return string Placeholder text to display in the empty datasource field + * field to provide a hint to the user, for example 'Type a user' + */ abstract public function getPlaceholderText(); + /** + * @return string Title to display in the selection popup dialog created + * after selecting the magnifier icon, for example 'Browse Projects' + */ public function getBrowseTitle() { return get_class($this); } @@ -136,8 +158,8 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { abstract public function loadResults(); /** - * @param $phase string - * @param $limit int + * @param string $phase + * @param int $limit */ protected function loadResultsForPhase($phase, $limit) { // By default, sources just load all of their results in every phase and @@ -150,6 +172,9 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { return $results; } + /** + * @return array + */ public static function tokenizeString($string) { $string = phutil_utf8_strtolower($string); $string = trim($string); @@ -475,6 +500,8 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { /** + * @param string $token + * @return bool * @task functions */ public static function isFunctionToken($token) { @@ -589,6 +616,7 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { /** + * @return array * @task functions */ public function getFunctionStack() { @@ -597,6 +625,7 @@ abstract class PhabricatorTypeaheadDatasource extends Phobject { /** + * @return array * @task functions */ protected function getCurrentFunction() { diff --git a/src/infrastructure/export/field/PhabricatorDoubleExportField.php b/src/infrastructure/export/field/PhabricatorDoubleExportField.php index 18087dd706..d09b6161df 100644 --- a/src/infrastructure/export/field/PhabricatorDoubleExportField.php +++ b/src/infrastructure/export/field/PhabricatorDoubleExportField.php @@ -3,6 +3,9 @@ final class PhabricatorDoubleExportField extends PhabricatorExportField { + /** + * @return float|null + */ public function getNaturalValue($value) { if ($value === null) { return $value; diff --git a/src/infrastructure/export/field/PhabricatorEpochExportField.php b/src/infrastructure/export/field/PhabricatorEpochExportField.php index a4d03f72da..b191644358 100644 --- a/src/infrastructure/export/field/PhabricatorEpochExportField.php +++ b/src/infrastructure/export/field/PhabricatorEpochExportField.php @@ -24,6 +24,9 @@ final class PhabricatorEpochExportField return $date->format('c'); } + /** + * @return int|null + */ public function getNaturalValue($value) { if ($value === null) { return $value; diff --git a/src/infrastructure/export/field/PhabricatorExportField.php b/src/infrastructure/export/field/PhabricatorExportField.php index 7ee0918595..c24e5debe5 100644 --- a/src/infrastructure/export/field/PhabricatorExportField.php +++ b/src/infrastructure/export/field/PhabricatorExportField.php @@ -24,6 +24,9 @@ abstract class PhabricatorExportField return $this->label; } + /** + * @return string|null + */ public function getTextValue($value) { $natural_value = $this->getNaturalValue($value); diff --git a/src/infrastructure/export/field/PhabricatorIDExportField.php b/src/infrastructure/export/field/PhabricatorIDExportField.php index 1ef3d53370..b6ab027304 100644 --- a/src/infrastructure/export/field/PhabricatorIDExportField.php +++ b/src/infrastructure/export/field/PhabricatorIDExportField.php @@ -3,6 +3,9 @@ final class PhabricatorIDExportField extends PhabricatorExportField { + /** + * @return int + */ public function getNaturalValue($value) { return (int)$value; } diff --git a/src/infrastructure/export/field/PhabricatorIntExportField.php b/src/infrastructure/export/field/PhabricatorIntExportField.php index 57f7e0ab29..fc0ffed619 100644 --- a/src/infrastructure/export/field/PhabricatorIntExportField.php +++ b/src/infrastructure/export/field/PhabricatorIntExportField.php @@ -3,6 +3,9 @@ final class PhabricatorIntExportField extends PhabricatorExportField { + /** + * @return int|null + */ public function getNaturalValue($value) { if ($value === null) { return $value; diff --git a/src/infrastructure/export/field/PhabricatorOptionExportField.php b/src/infrastructure/export/field/PhabricatorOptionExportField.php index e6d3e9b45b..1a3091af44 100644 --- a/src/infrastructure/export/field/PhabricatorOptionExportField.php +++ b/src/infrastructure/export/field/PhabricatorOptionExportField.php @@ -14,6 +14,9 @@ final class PhabricatorOptionExportField return $this->options; } + /** + * @return array|null + */ public function getNaturalValue($value) { if ($value === null) { return $value; diff --git a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php index 8d4244ba06..3ef3c4b177 100644 --- a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php +++ b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php @@ -1149,6 +1149,11 @@ abstract class PhabricatorCursorPagedPolicyAwareQuery /** + * @return array> PhutilKeyValueCacheStack string + * (e.g. 'id', 'rank', 'fulltext-created', 'fulltext-modified') and the + * cache value as an array, for example '{"table":"user","column":"id", + * "reverse":false,"type":"int","unique":true}' or '{"table":null, + * "column":"_ft_rank","type":"int","requires-ferret":true,"having":true}' * @task order */ public function getOrderableColumns() { @@ -1250,6 +1255,7 @@ abstract class PhabricatorCursorPagedPolicyAwareQuery } /** + * @return PhabricatorQueryOrderVector * @task order */ private function getQueryableOrderVector() { diff --git a/src/view/AphrontTagView.php b/src/view/AphrontTagView.php index a055fb16ad..0ed9b588e8 100644 --- a/src/view/AphrontTagView.php +++ b/src/view/AphrontTagView.php @@ -14,11 +14,18 @@ abstract class AphrontTagView extends AphrontView { private $mustCapture; private $workflow; + /** + * @param bool $workflow + * @return $this + */ public function setWorkflow($workflow) { $this->workflow = $workflow; return $this; } + /** + * @return bool + */ public function getWorkflow() { return $this->workflow; } diff --git a/src/view/form/control/PhabricatorRemarkupControl.php b/src/view/form/control/PhabricatorRemarkupControl.php index 2a77d12b82..06065dc287 100644 --- a/src/view/form/control/PhabricatorRemarkupControl.php +++ b/src/view/form/control/PhabricatorRemarkupControl.php @@ -13,6 +13,12 @@ final class PhabricatorRemarkupControl return $this; } + /** + * Set whether the form can be pinned on the screen + * @param bool $can_pin True if the form can be pinned on the screen by the + * user + * @return $this + */ public function setCanPin($can_pin) { $this->canPin = $can_pin; return $this; diff --git a/src/view/layout/PhabricatorActionView.php b/src/view/layout/PhabricatorActionView.php index 3de60a2374..c56cfb2ffd 100644 --- a/src/view/layout/PhabricatorActionView.php +++ b/src/view/layout/PhabricatorActionView.php @@ -101,6 +101,10 @@ final class PhabricatorActionView extends AphrontView { return $this->disabled; } + /** + * @param bool $workflow + * @return $this + */ public function setWorkflow($workflow) { $this->workflow = $workflow; return $this; diff --git a/src/view/phui/PHUICrumbView.php b/src/view/phui/PHUICrumbView.php index bf7890ac87..9ffae361d7 100644 --- a/src/view/phui/PHUICrumbView.php +++ b/src/view/phui/PHUICrumbView.php @@ -36,6 +36,10 @@ final class PHUICrumbView extends AphrontView { return $this->alwaysVisible; } + /** + * @param bool $workflow + * @return $this + */ public function setWorkflow($workflow) { $this->workflow = $workflow; return $this; diff --git a/src/view/phui/PHUIInfoView.php b/src/view/phui/PHUIInfoView.php index 58898d40d2..fa08f0e9dd 100644 --- a/src/view/phui/PHUIInfoView.php +++ b/src/view/phui/PHUIInfoView.php @@ -30,11 +30,18 @@ final class PHUIInfoView extends AphrontTagView { return $this; } + /** + * @param string One of the SEVERITY_* constants defined in PHUIInfoView + * @return $this + */ public function setSeverity($severity) { $this->severity = $severity; return $this; } + /** + * @return string One of the SEVERITY_* constants defined in PHUIInfoView + */ private function getSeverity() { $severity = $this->severity ? $this->severity : self::SEVERITY_ERROR; return $severity; diff --git a/src/view/phui/PHUILinkView.php b/src/view/phui/PHUILinkView.php index 33843c2ae9..61eee00636 100644 --- a/src/view/phui/PHUILinkView.php +++ b/src/view/phui/PHUILinkView.php @@ -21,6 +21,10 @@ final class PHUILinkView return $this; } + /** + * @param bool $workflow + * @return $this + */ public function setWorkflow($workflow) { $this->workflow = $workflow; return $this; -- 2.51.2