PHP 7 docblock and function return type?











up vote
2
down vote

favorite












Do I have to make docblocks in php 7 if I declare my function return type?



Is it sufficient to do this for example:



public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Or should I do this:



/**
* Find a user by its login.
*
* @param string $login
* @return User
*/
public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Feels like double documentation.










share|improve this question


















  • 1




    documenting your code is not the same as specifying a PHP 7 return type declaration. Return type declarations really specify the type of the value that will be returned from a function. The return type declaration also has an impact on returned values and error reporting, with strict typing, in the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise a TypeError will be thrown see manual.
    – lovelace
    Nov 22 at 15:12








  • 2




    You never "have to" make docblocks; you don't have to write any documentation at all. So the question really is, is it still useful to add a docblock.
    – IMSoP
    Nov 22 at 15:27















up vote
2
down vote

favorite












Do I have to make docblocks in php 7 if I declare my function return type?



Is it sufficient to do this for example:



public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Or should I do this:



/**
* Find a user by its login.
*
* @param string $login
* @return User
*/
public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Feels like double documentation.










share|improve this question


















  • 1




    documenting your code is not the same as specifying a PHP 7 return type declaration. Return type declarations really specify the type of the value that will be returned from a function. The return type declaration also has an impact on returned values and error reporting, with strict typing, in the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise a TypeError will be thrown see manual.
    – lovelace
    Nov 22 at 15:12








  • 2




    You never "have to" make docblocks; you don't have to write any documentation at all. So the question really is, is it still useful to add a docblock.
    – IMSoP
    Nov 22 at 15:27













up vote
2
down vote

favorite









up vote
2
down vote

favorite











Do I have to make docblocks in php 7 if I declare my function return type?



Is it sufficient to do this for example:



public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Or should I do this:



/**
* Find a user by its login.
*
* @param string $login
* @return User
*/
public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Feels like double documentation.










share|improve this question













Do I have to make docblocks in php 7 if I declare my function return type?



Is it sufficient to do this for example:



public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Or should I do this:



/**
* Find a user by its login.
*
* @param string $login
* @return User
*/
public function findByLogin(string $login): User
{
return User::where(User::COL_LOGIN, $login)->first();
}


Feels like double documentation.







php






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 22 at 14:59









Michael

988




988








  • 1




    documenting your code is not the same as specifying a PHP 7 return type declaration. Return type declarations really specify the type of the value that will be returned from a function. The return type declaration also has an impact on returned values and error reporting, with strict typing, in the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise a TypeError will be thrown see manual.
    – lovelace
    Nov 22 at 15:12








  • 2




    You never "have to" make docblocks; you don't have to write any documentation at all. So the question really is, is it still useful to add a docblock.
    – IMSoP
    Nov 22 at 15:27














  • 1




    documenting your code is not the same as specifying a PHP 7 return type declaration. Return type declarations really specify the type of the value that will be returned from a function. The return type declaration also has an impact on returned values and error reporting, with strict typing, in the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise a TypeError will be thrown see manual.
    – lovelace
    Nov 22 at 15:12








  • 2




    You never "have to" make docblocks; you don't have to write any documentation at all. So the question really is, is it still useful to add a docblock.
    – IMSoP
    Nov 22 at 15:27








1




1




documenting your code is not the same as specifying a PHP 7 return type declaration. Return type declarations really specify the type of the value that will be returned from a function. The return type declaration also has an impact on returned values and error reporting, with strict typing, in the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise a TypeError will be thrown see manual.
– lovelace
Nov 22 at 15:12






documenting your code is not the same as specifying a PHP 7 return type declaration. Return type declarations really specify the type of the value that will be returned from a function. The return type declaration also has an impact on returned values and error reporting, with strict typing, in the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise a TypeError will be thrown see manual.
– lovelace
Nov 22 at 15:12






2




2




You never "have to" make docblocks; you don't have to write any documentation at all. So the question really is, is it still useful to add a docblock.
– IMSoP
Nov 22 at 15:27




You never "have to" make docblocks; you don't have to write any documentation at all. So the question really is, is it still useful to add a docblock.
– IMSoP
Nov 22 at 15:27












2 Answers
2






active

oldest

votes

















up vote
5
down vote













You don't need to add PHPDocs to your code - the return type declarations are fine.



Only reason to add a PHPDoc is to define even more information / more specific types.



See this example here:



/**
* @return string An array of strings
*/
public function findByLogin(): array
{
return ['foo', 'bar'];
}


So, if you are fine with return types, feel free to skip PHPDoc. If you want to give more, standardized info about params/return types: Add an additional PHPDoc.



Tools like PHPStorm help to keep parameters, return types and PHPDoc synchronous. They will show warnings if both do not match.






share|improve this answer




























    up vote
    2
    down vote













    It's up to you.



    If a method docblock has params & return value types only it's useless and gives nothing additional info for the reader.



    If the docblock gives more info (description of input params or what the method return in case of no data was found, etc.) it gives additional value and it makes sense to write it.



    In your code snippet the only explanation is what the method does, but @param and @return give no additional info so I would omit them.






    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53433627%2fphp-7-docblock-and-function-return-type%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes








      up vote
      5
      down vote













      You don't need to add PHPDocs to your code - the return type declarations are fine.



      Only reason to add a PHPDoc is to define even more information / more specific types.



      See this example here:



      /**
      * @return string An array of strings
      */
      public function findByLogin(): array
      {
      return ['foo', 'bar'];
      }


      So, if you are fine with return types, feel free to skip PHPDoc. If you want to give more, standardized info about params/return types: Add an additional PHPDoc.



      Tools like PHPStorm help to keep parameters, return types and PHPDoc synchronous. They will show warnings if both do not match.






      share|improve this answer

























        up vote
        5
        down vote













        You don't need to add PHPDocs to your code - the return type declarations are fine.



        Only reason to add a PHPDoc is to define even more information / more specific types.



        See this example here:



        /**
        * @return string An array of strings
        */
        public function findByLogin(): array
        {
        return ['foo', 'bar'];
        }


        So, if you are fine with return types, feel free to skip PHPDoc. If you want to give more, standardized info about params/return types: Add an additional PHPDoc.



        Tools like PHPStorm help to keep parameters, return types and PHPDoc synchronous. They will show warnings if both do not match.






        share|improve this answer























          up vote
          5
          down vote










          up vote
          5
          down vote









          You don't need to add PHPDocs to your code - the return type declarations are fine.



          Only reason to add a PHPDoc is to define even more information / more specific types.



          See this example here:



          /**
          * @return string An array of strings
          */
          public function findByLogin(): array
          {
          return ['foo', 'bar'];
          }


          So, if you are fine with return types, feel free to skip PHPDoc. If you want to give more, standardized info about params/return types: Add an additional PHPDoc.



          Tools like PHPStorm help to keep parameters, return types and PHPDoc synchronous. They will show warnings if both do not match.






          share|improve this answer












          You don't need to add PHPDocs to your code - the return type declarations are fine.



          Only reason to add a PHPDoc is to define even more information / more specific types.



          See this example here:



          /**
          * @return string An array of strings
          */
          public function findByLogin(): array
          {
          return ['foo', 'bar'];
          }


          So, if you are fine with return types, feel free to skip PHPDoc. If you want to give more, standardized info about params/return types: Add an additional PHPDoc.



          Tools like PHPStorm help to keep parameters, return types and PHPDoc synchronous. They will show warnings if both do not match.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 22 at 15:14









          Johannes N.

          1,55521837




          1,55521837
























              up vote
              2
              down vote













              It's up to you.



              If a method docblock has params & return value types only it's useless and gives nothing additional info for the reader.



              If the docblock gives more info (description of input params or what the method return in case of no data was found, etc.) it gives additional value and it makes sense to write it.



              In your code snippet the only explanation is what the method does, but @param and @return give no additional info so I would omit them.






              share|improve this answer

























                up vote
                2
                down vote













                It's up to you.



                If a method docblock has params & return value types only it's useless and gives nothing additional info for the reader.



                If the docblock gives more info (description of input params or what the method return in case of no data was found, etc.) it gives additional value and it makes sense to write it.



                In your code snippet the only explanation is what the method does, but @param and @return give no additional info so I would omit them.






                share|improve this answer























                  up vote
                  2
                  down vote










                  up vote
                  2
                  down vote









                  It's up to you.



                  If a method docblock has params & return value types only it's useless and gives nothing additional info for the reader.



                  If the docblock gives more info (description of input params or what the method return in case of no data was found, etc.) it gives additional value and it makes sense to write it.



                  In your code snippet the only explanation is what the method does, but @param and @return give no additional info so I would omit them.






                  share|improve this answer












                  It's up to you.



                  If a method docblock has params & return value types only it's useless and gives nothing additional info for the reader.



                  If the docblock gives more info (description of input params or what the method return in case of no data was found, etc.) it gives additional value and it makes sense to write it.



                  In your code snippet the only explanation is what the method does, but @param and @return give no additional info so I would omit them.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 22 at 15:15









                  pryazhnikov

                  1,52221112




                  1,52221112






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53433627%2fphp-7-docblock-and-function-return-type%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      What visual should I use to simply compare current year value vs last year in Power BI desktop

                      How to ignore python UserWarning in pytest?

                      Alexandru Averescu