Improve documentation of `null` as return type (WIP)
authorMatthias Schmidt <gravatronics@live.com>
Sat, 30 Jul 2016 12:35:13 +0000 (14:35 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Sat, 30 Jul 2016 12:35:21 +0000 (14:35 +0200)
27 files changed:
wcfsetup/install/files/lib/data/IStorableObject.class.php
wcfsetup/install/files/lib/data/ITraversableObject.class.php
wcfsetup/install/files/lib/data/article/content/ArticleContent.class.php
wcfsetup/install/files/lib/data/bbcode/BBCodeCache.class.php
wcfsetup/install/files/lib/data/box/Box.class.php
wcfsetup/install/files/lib/data/box/content/BoxContent.class.php
wcfsetup/install/files/lib/data/category/AbstractDecoratedCategory.class.php
wcfsetup/install/files/lib/data/like/object/ILikeObject.class.php
wcfsetup/install/files/lib/system/acl/ACLHandler.class.php
wcfsetup/install/files/lib/system/application/ApplicationHandler.class.php
wcfsetup/install/files/lib/system/attachment/IAttachmentObjectType.class.php
wcfsetup/install/files/lib/system/box/BoxHandler.class.php
wcfsetup/install/files/lib/system/box/IBoxController.class.php
wcfsetup/install/files/lib/system/captcha/CaptchaHandler.class.php
wcfsetup/install/files/lib/system/category/CategoryHandler.class.php
wcfsetup/install/files/lib/system/category/ICategoryType.class.php
wcfsetup/install/files/lib/system/clipboard/ClipboardHandler.class.php
wcfsetup/install/files/lib/system/clipboard/action/IClipboardAction.class.php
wcfsetup/install/files/lib/system/comment/CommentHandler.class.php
wcfsetup/install/files/lib/system/condition/AbstractIntegerCondition.class.php
wcfsetup/install/files/lib/system/option/ISearchableConditionUserOption.class.php
wcfsetup/install/files/lib/system/package/plugin/AbstractXMLPackageInstallationPlugin.class.php
wcfsetup/install/files/lib/system/package/plugin/IPackageInstallationPlugin.class.php
wcfsetup/install/files/lib/system/request/ControllerMap.class.php
wcfsetup/install/files/lib/system/search/ArticleSearch.class.php
wcfsetup/install/files/lib/system/search/ISearchableObjectType.class.php
wcfsetup/install/files/lib/system/user/authentication/IUserAuthentication.class.php

index cf2674bf543ed1af0cab137acd2ae2bc3c9a7a5b..940f9bec33a78b386d909891dcd9b9ae64fe19a8 100644 (file)
@@ -11,7 +11,8 @@ namespace wcf\data;
  */
 interface IStorableObject {
        /**
-        * Returns the value of a object data variable with the given name.
+        * Returns the value of a object data variable with the given name or `null` if no
+        * such data variable exists.
         * 
         * @param       string          $name
         * @return      mixed
index bcd038eaaa2e42956c47d23260b1b4c09bbed0c7..def958a33507a3d7fc0700009b95600da40599ce 100644 (file)
@@ -19,10 +19,10 @@ interface ITraversableObject extends \SeekableIterator {
        
        /**
         * Searches a specific object by object id and setting internal iterator
-        * pointer to found item. Returns null if object id is not found.
+        * pointer to found item. Returns `null` if object id is not found.
         * 
         * @param       integer         $objectID
-        * @return      \wcf\data\DatabaseObject
+        * @return      DatabaseObject|null
         */
        public function search($objectID);
 }
index 042e3d671a1eae2944647ee75e9dd11269b3f91b..36aec40dbc4d1490b30511cb20124ae4efe98619 100644 (file)
@@ -125,9 +125,9 @@ class ArticleContent extends DatabaseObject implements ILinkableObject, IRouteCo
        }
        
        /**
-        * Returns the language of this article content as language object.
+        * Returns the language of this article content or `null` if no language has been specified.
         * 
-        * @return Language|null
+        * @return      Language|null
         */
        public function getLanguage() {
                if ($this->languageID) {
@@ -138,7 +138,7 @@ class ArticleContent extends DatabaseObject implements ILinkableObject, IRouteCo
        }
        
        /**
-        * Returns a certain article content.
+        * Returns a certain article content or `null` if it does not exist.
         * 
         * @param       integer         $articleID
         * @param       integer         $languageID
index e8604f3892c26d259834bc94ca857be8b9fdcbf3..187a1c2659435b1704aad163f4cec8f801737114 100644 (file)
@@ -43,10 +43,10 @@ class BBCodeCache extends SingletonFactory {
        }
        
        /**
-        * Returns the BBCode with the given tag or null if no such BBCode exists.
+        * Returns the BBCode with the given tag or `null` if no such BBCode exists.
         * 
         * @param       string          $tag
-        * @return      \wcf\data\bbcode\BBCode
+        * @return      BBCode|null
         */
        public function getBBCodeByTag($tag) {
                if (isset($this->cachedBBCodes[$tag])) {
index 14d7aaf660254e0067e2ef3476203f26bf5e6b8b..21864d9fdd919735f92fd3a17dfd5e0a1dc7f2ff 100644 (file)
@@ -326,9 +326,9 @@ class Box extends DatabaseObject {
        }
        
        /**
-        * Returns the image of this box.
+        * Returns the image of this box or `null` if the box has no image.
         * 
-        * @return      ViewableMedia
+        * @return      ViewableMedia|null
         */
        public function getImage() {
                if ($this->boxType === 'menu') {
index 1280d3c5a9b5034c0c0ebe57944419f3c35e153f..b3883aed5fbb5bbc05af6a23eb0cb267669890ec 100644 (file)
@@ -39,7 +39,7 @@ class BoxContent extends DatabaseObject {
        protected $image;
        
        /**
-        * Returns a certain box content.
+        * Returns a certain box content or `null` if it does not exist.
         *
         * @param       integer         $boxID
         * @param       integer         $languageID
index 906e13bc3e6073bc5d3da96d7b0a1276f310deab..a00b5644dd8784fc2396a12501f04033678f3c71 100644 (file)
@@ -97,11 +97,11 @@ abstract class AbstractDecoratedCategory extends DatabaseObjectDecorator {
        }
        
        /**
-        * Returns the decorated category with the given id or null if no such
+        * Returns the decorated category with the given id or `null` if no such
         * category exists.
         * 
         * @param       integer         $categoryID
-        * @return      AbstractDecoratedCategory
+        * @return      AbstractDecoratedCategory|null
         */
        public static function getCategory($categoryID) {
                $category = CategoryHandler::getInstance()->getCategory($categoryID);
index 10cca0afafef8d1066b4098cf03e52251273992c..254b0745fce9c475676a989db9bbb0e5617e1ff6 100644 (file)
@@ -64,9 +64,9 @@ interface ILikeObject extends IDatabaseObjectProcessor, ITitledObject {
        public function sendNotification(Like $like);
        
        /**
-        * Returns the language id of this object or its parent.
+        * Returns the language id of this object or its parent or `null` if no explicit language is set.
         * 
-        * @return      integer
+        * @return      integer|null
         */
        public function getLanguageID();
 }
index 3054ca4c6e79d5b415d9d8a7cf6ae52619f4c48b..03aa93bb49a5af0771f897322c1da5934b6992c2 100644 (file)
@@ -136,11 +136,12 @@ class ACLHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the acl option category with the given object type id and name.
+        * Returns the acl option category with the given object type id and name
+        * or `null` if no such category exists.
         * 
         * @param       integer         $objectTypeID
         * @param       string          $categoryName
-        * @return      \wcf\data\acl\option\category\ACLOptionCategory
+        * @return      ACLOptionCategory|null
         */
        public function getCategory($objectTypeID, $categoryName) {
                if (isset($this->categories[$objectTypeID][$categoryName])) {
index d142688187dd95a32eca77a126daeb042f2f54e7..df036211983985eaf015581d9bfd7cbbc3c395c8 100644 (file)
@@ -38,10 +38,11 @@ class ApplicationHandler extends SingletonFactory {
        
        /**
         * Returns an application based upon it's abbreviation. Will return the
-        * primary application if $abbreviation equals to 'wcf'
+        * primary application if the abbreviation is `wcf` or `null` if no such
+        * application exists.
         * 
         * @param       string          $abbreviation   package abbreviation, e.g. `wbb` for `com.woltlab.wbb`
-        * @return      Application
+        * @return      Application|null
         */
        public function getApplication($abbreviation) {
                if (isset($this->cache['abbreviation'][$abbreviation])) {
@@ -56,10 +57,11 @@ class ApplicationHandler extends SingletonFactory {
        }
        
        /**
-        * Returns an application by package id.
+        * Returns an application delivered by the package with the given id or `null`
+        * if no such application exists.
         * 
-        * @param       integer         $packageID      package id
-        * @return      Application     application object
+        * @param       integer                 $packageID      package id
+        * @return      Application|null        application object
         * @since       3.0
         */
        public function getApplicationByID($packageID) {
@@ -132,10 +134,10 @@ class ApplicationHandler extends SingletonFactory {
        }
        
        /**
-        * Returns abbreviation for a given package id or null if application is unknown.
+        * Returns abbreviation for a given package id or `null` if application is unknown.
         * 
         * @param       integer         $packageID      unique package id
-        * @return      string
+        * @return      string|null
         */
        public function getAbbreviation($packageID) {
                foreach ($this->cache['abbreviation'] as $abbreviation => $applicationID) {
index bb50dba8022ebbb8ae67fd7e5e16a32f6eef5df7..c2b77e3dec702a12ec65214d29653c66a14b3269 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\system\attachment;
 use wcf\data\attachment\Attachment;
+use wcf\data\IUserContent;
 
 /**
  * Any attachment object type should implement this interface.
@@ -67,10 +68,10 @@ interface IAttachmentObjectType {
        public function getMaxCount();
        
        /**
-        * Returns the container object of an attachment.
+        * Returns the container object of an attachment or `null` if the container object does not exist.
         * 
         * @param       integer         $objectID
-        * @return      \wcf\data\IUserContent
+        * @return      IUserContent|null
         */
        public function getObject($objectID);
        
index 83a0cff86bd2b7b65fb83bba236057da1062cb46..d6f99dc308829d58d3b5dddbfac0f542a8c0e9f9 100644 (file)
@@ -107,7 +107,7 @@ class BoxHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the box with the given id or null.
+        * Returns the box with the given id or `null` if it does not exist.
         * 
         * @param       integer         $boxID
         * @return      Box|null
@@ -135,7 +135,7 @@ class BoxHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the box with given identifier.
+        * Returns the box with given identifier or `null` if there is no such box.
         *
         * @param       string          $identifier
         * @return      Box|null
index f279bd020ca601d854b4f5993fa5e22eadc11e28..d4db587735c46dc0800ae134a1cfb14a6601b986 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\system\box;
 use wcf\data\box\Box;
+use wcf\data\media\ViewableMedia;
 
 /**
  * Default interface for box controllers.
@@ -27,11 +28,11 @@ interface IBoxController {
        public function hasContent();
        
        /**
-        * Returns the image of this box.
+        * Returns the image of this box or `null` if the box has no image.
         * 
         * Note: The box itself checks if the active user can access the returned media file.
         *
-        * @return      \wcf\data\media\ViewableMedia
+        * @return      ViewableMedia|null
         */
        public function getImage();
        
index 8ed31008e87ac297a1d8265dba54265636d0c52f..83b7766243f2f865670e0be154f204561fb6b4cd 100644 (file)
@@ -37,7 +37,7 @@ class CaptchaHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the captcha object type with the given id or null if no such
+        * Returns the captcha object type with the given id or `null` if no such
         * object type exists.
         * 
         * @param       integer         $objectTypeID
index dd7f896e36d10eaad0b444a37cc351ddc7fcfdcb..15d11f2ebac84479f218abf45f31a4cd04a94854 100644 (file)
@@ -64,10 +64,10 @@ class CategoryHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the category object with the given category id.
+        * Returns the category with the given id or `null` if no such category ecists.
         * 
         * @param       integer         $categoryID
-        * @return      \wcf\data\category\Category
+        * @return      Category|null
         */
        public function getCategory($categoryID) {
                if (isset($this->categories[$categoryID])) {
@@ -103,7 +103,7 @@ class CategoryHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the category object type with the given id or null if no such object type exists.
+        * Returns the category object type with the given id or `null` if no such object type exists.
         * 
         * @param       integer         $objectTypeID
         * @return      ObjectType|null
@@ -117,7 +117,7 @@ class CategoryHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the category object type with the given name or null if no such object type exists.
+        * Returns the category object type with the given name or `null` if no such object type exists.
         * 
         * @param       string          $objectType
         * @return      ObjectType|null
index 7ba45d49b8c8c78bac18140b7b0ec3b2c93e9615..237e1563d40c014ed0a5a218d35d7909890684ea 100644 (file)
@@ -74,11 +74,10 @@ interface ICategoryType {
        
        /**
         * Returns the name of the object type of the definition with the given
-        * name for categories of this type. If categories of this type are no
-        * object of the relevant type, null is returned.
+        * name for categories of this type or `null` if no such object type exists.
         * 
         * @param       string          $definitionName
-        * @return      string
+        * @return      string|null
         */
        public function getObjectTypeName($definitionName);
        
index dea634ab49eafa5ecf4c0ebed2d235c97628ccf1..e9d419f94831241bcbfe3ecd496fb01409556139 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 namespace wcf\system\clipboard;
+use wcf\data\object\type\ObjectType;
 use wcf\data\object\type\ObjectTypeCache;
 use wcf\data\DatabaseObject;
 use wcf\data\DatabaseObjectList;
@@ -135,10 +136,11 @@ class ClipboardHandler extends SingletonFactory {
        }
        
        /**
-        * Returns a type id by name.
+        * Returns the id of the clipboard object type with the given name or `null` if no such
+        * clipboard object type exists.
         * 
         * @param       string          $typeName
-        * @return      integer
+        * @return      integer|null
         */
        public function getObjectTypeID($typeName) {
                if (isset($this->cache['objectTypeNames'][$typeName])) {
@@ -149,10 +151,11 @@ class ClipboardHandler extends SingletonFactory {
        }
        
        /**
-        * Returns a type by object type id.
+        * Returns the clipboard object type with the given id or `null` if no such
+        * clipboard object type exists.
         * 
-        * @param       integer                         $objectTypeID
-        * @return      \wcf\data\object\type\ObjectType
+        * @param       integer         $objectTypeID
+        * @return      ObjectType|null
         */
        public function getObjectType($objectTypeID) {
                if (isset($this->cache['objectTypes'][$objectTypeID])) {
@@ -163,10 +166,13 @@ class ClipboardHandler extends SingletonFactory {
        }
        
        /**
-        * Returns object type by object type name.
+        * Returns the id of the clipboard object type with the given name or `null` if no such
+        * clipboard object type exists.
+        * 
+        * TODO: The name of this method does not reflect its return type and appears not to be used.
         * 
         * @param       string          $objectType
-        * @return      integer
+        * @return      integer|null
         */
        public function getObjectTypeByName($objectType) {
                foreach ($this->cache['objectTypes'] as $objectTypeID => $objectTypeObj) {
@@ -290,11 +296,11 @@ class ClipboardHandler extends SingletonFactory {
        }
        
        /**
-        * Returns items for clipboard editor.
+        * Returns the data of the items for clipboard editor or `null` if no items are marked.
         * 
         * @param       string|string[]         $page
         * @param       integer                 $pageObjectID
-        * @return      mixed[][]
+        * @return      array|null
         * @throws      SystemException
         */
        public function getEditorItems($page, $pageObjectID) {
index 8b6c74d144a2cacc1b21ff804aa2c996c5db5010..d8732bb4da155ecd03b8864831a170489a910f94 100644 (file)
@@ -2,6 +2,7 @@
 namespace wcf\system\clipboard\action;
 use wcf\data\clipboard\action\ClipboardAction;
 use wcf\data\DatabaseObject;
+use wcf\system\clipboard\ClipboardEditorItem;
 
 /**
  * Basic interface for all clipboard editor actions.
@@ -20,12 +21,12 @@ interface IClipboardAction {
        public function getTypeName();
        
        /**
-        * Returns editor item for the clipboard action with the given name or null
+        * Returns the editor item for the clipboard action with the given name or `null`
         * if the action is not applicable to the given objects.
         * 
-        * @param       DatabaseObject[]                                $objects
-        * @param       \wcf\data\clipboard\action\ClipboardAction      $action
-        * @return      \wcf\system\clipboard\ClipboardEditorItem
+        * @param       DatabaseObject[]        $objects
+        * @param       ClipboardAction         $action
+        * @return      ClipboardEditorItem|null
         */
        public function execute(array $objects, ClipboardAction $action);
        
index 32098632da7687270596e2354260af676508bd95..b0817373f6a43320990a98fe67fba23eecddc68b 100644 (file)
@@ -49,10 +49,11 @@ class CommentHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the object type id for a given object type.
+        * Returns the id of the comment object type with the given name or `null` if no
+        * such object type exists.
         * 
         * @param       string          $objectType
-        * @return      integer
+        * @return      integer|null
         */
        public function getObjectTypeID($objectType) {
                if (isset($this->cache['objectTypeIDs'][$objectType])) {
@@ -63,10 +64,11 @@ class CommentHandler extends SingletonFactory {
        }
        
        /**
-        * Returns the object type for a given object type id.
+        * Returns the comment object type with the given name or `null` if no such
+        * object type exists.
         * 
         * @param       integer         $objectTypeID
-        * @return      ObjectType
+        * @return      ObjectType|null
         */
        public function getObjectType($objectTypeID) {
                if (isset($this->cache['objectTypes'][$objectTypeID])) {
index 2e610731aea5748cc4a28da2374c606d30b3eaa6..37c5254db227be7c15cb047624a41be1e11d40d3 100644 (file)
@@ -133,10 +133,10 @@ HTML;
        }
        
        /**
-        * Returns the maximum value the property can have or null if there is no
+        * Returns the maximum value the property can have or `null` if there is no
         * such maximum.
         * 
-        * @return      integer
+        * @return      integer|null
         */
        protected function getMaxValue() {
                if ($this->getDecoratedObject()->maxvalue !== null) {
@@ -169,10 +169,10 @@ HTML;
        }
        
        /**
-        * Returns the minimum value the property can have or null if there is no
+        * Returns the minimum value the property can have or `null` if there is no
         * such minimum.
         * 
-        * @return      integer
+        * @return      integer|null
         */
        protected function getMinValue() {
                if ($this->getDecoratedObject()->minvalue !== null) {
index 50df569eb9225f4ce4a9c5d943ca1bc5bbc52583..d7112bcc93b6d972652d7481c3eb7410f5e3e917 100644 (file)
@@ -35,7 +35,7 @@ interface ISearchableConditionUserOption extends ISearchableUserOption {
        public function checkUser(User $user, Option $option, $value);
        
        /**
-        * Returns the data of the condition or null if the option should be ignored.
+        * Returns the data of the condition or `null` if the option should be ignored.
         * 
         * @param       Option          $option
         * @param       mixed           $newValue
index 9576e7bf3826530593d7b6d34351e52330b74105..5cb3a7eb87fb22817cb95d8a361042127cb20788 100644 (file)
@@ -295,10 +295,11 @@ abstract class AbstractXMLPackageInstallationPlugin extends AbstractPackageInsta
        protected function validateImport(array $data) { }
        
        /**
-        * Find an existing item for updating, should return sql query.
+        * Returns an array with a sql query and its parameters to find an existing item for updating
+        * or `null` if updates are not supported.
         * 
-        * @param       array   $data
-        * @return      array
+        * @param       array           $data
+        * @return      array|null
         */
        abstract protected function findExistingItem(array $data);
        
index 409db32ed644fff1c2022144cf89ceaa60cf3b4f..2d91907cf3875d14f2a1079b60dbba107582a993 100644 (file)
@@ -35,8 +35,8 @@ interface IPackageInstallationPlugin {
        public function uninstall();
        
        /**
-        * Returns the default file name containing the instructions. If no default
-        * file name is supported, null is returned.
+        * Returns the default file name containing the instructions or `null` if no default
+        * file name is supported.
         * 
         * @return      string
         * @since       3.0
@@ -47,8 +47,8 @@ interface IPackageInstallationPlugin {
         * Validates if the passed instruction is valid for this package installation plugin. If anything is
         * wrong with it, this method should return false.
         * 
-        * @param       \wcf\system\package\PackageArchive      $packageArchive
-        * @param       string                                  $instruction
+        * @param       PackageArchive  $packageArchive
+        * @param       string          $instruction
         * @return      boolean
         */
        public static function isValid(PackageArchive $packageArchive, $instruction);
index eba3ddcd206fe464f7ce831d6d448fc75536f940..c083072f11dd897916d3c4e1ae0f86c0803e384a 100644 (file)
@@ -298,14 +298,14 @@ class ControllerMap extends SingletonFactory {
        }
        
        /**
-        * Returns the class data for the active request or null if for the given
-        * configuration no proper class exist.
+        * Returns the class data for the active request or `null` if no proper class exists
+        * for the given configuration.
         *
         * @param       string          $application    application identifier
         * @param       string          $controller     controller name
         * @param       boolean         $isAcpRequest   true if this is an ACP request
         * @param       string          $pageType       page type, e.g. 'form' or 'action'
-        * @return      string[]        className, controller and pageType
+        * @return      string[]|null   className, controller and pageType
         */
        protected function getClassData($application, $controller, $isAcpRequest, $pageType) {
                $className = $application . '\\' . ($isAcpRequest ? 'acp\\' : '') . $pageType . '\\' . $controller . ucfirst($pageType);
index b6ec332b984d4709061225d17ecd955361050653..f70b4ee48e9dcc84242ef5e3b081b6281943de6f 100644 (file)
@@ -51,7 +51,10 @@ class ArticleSearch extends AbstractSearchableObjectType {
         * @inheritDoc
         */
        public function getObject($objectID) {
-               if (isset($this->messageCache[$objectID])) return $this->messageCache[$objectID];
+               if (isset($this->messageCache[$objectID])) {
+                       return $this->messageCache[$objectID];
+               }
+               
                return null;
        }
        
index 8a0a06d009041d991a7bf8f49fffed491818c166..60c45f47e586c2c4648e58c472867abbd5b7f711 100644 (file)
@@ -44,10 +44,10 @@ interface ISearchableObjectType {
        public function getApplication();
        
        /**
-        * Returns the search conditions of this message type.
+        * Returns the search conditions of this message type or `null` if no special search conditions are necessary.
         * 
         * @param       IForm           $form
-        * @return      PreparedStatementConditionBuilder
+        * @return      PreparedStatementConditionBuilder|null
         */
        public function getConditions(IForm $form = null);
        
index cb8c18f0a2d1136a1bfb8eec05388204ce0e1439..aec8646230a29299e093df22ce065c3c6ab1d2f5 100644 (file)
@@ -14,7 +14,7 @@ interface IUserAuthentication {
        /**
         * Returns an unique instance of the authentication class
         * 
-        * @return      \wcf\system\user\authentication\IUserAuthentication
+        * @return      IUserAuthentication
         */
        public static function getInstance();
        
@@ -28,28 +28,28 @@ interface IUserAuthentication {
        /**
         * Stores the user access data for a persistent login.
         * 
-        * @param       \wcf\data\user\User     $user
-        * @param       string                  $username
-        * @param       string                  $password
+        * @param       User            $user
+        * @param       string          $username
+        * @param       string          $password
         */
        public function storeAccessData(User $user, $username, $password);
        
        /**
-        * Does a manual user login.
+        * Does a manual user login or `null` if login was unsuccessful.
         * 
         * @param       string          $username
         * @param       string          $password
         * @param       string          $userClassname          class name of user class
-        * @return      \wcf\data\user\User
+        * @return      User|null
         */
        public function loginManually($username, $password, $userClassname = User::class);
        
        /**
-        * Does a user login automatically.
+        * Does a user login automatically or `null` if login was unsuccessful.
         * 
         * @param       boolean         $persistent             true = persistent login
         * @param       string          $userClassname          class name of user class
-        * @return      \wcf\data\user\User
+        * @return      User|null
         */
        public function loginAutomatically($persistent = false, $userClassname = User::class);
 }