Search code examples
phpdocblocks

Is there a way to "reuse" a PHP DocBlock?


I currently have code like this:

/**
 * blah blah blah thing1
 *
 * @return string a thing1
 */
function thing1() {
    //
}

/**
 * blah blah blah thing2
 *
 * @return string a thing2
 */
function thing2() {
    //
}

//dozens more with the same format

Is there a more concise way to do that?


Solution

  • Assuming the docblocks are actually identical, often the case when you're overriding an inherited method but maintaining the same signature, you can use @see....

    abstract class MyBaseModel
        /**
         * @param Boolean $excludeDeleted Should soft-deleted records be excluded
         */
        public function newQuery($excludeDeleted = true)
        {
            ....
        }
    }
    
    class MyExtendedModel extends MyBaseModel
        /**
         * Overload the base newQuery() method so that we can inject any security filters into the query
         *
         * @see MyBaseModel::newQuery
         */
        public function newQuery($excludeDeleted = true)
        {
            ....
        }
    }
    

    but the sample docblocks for your thing1() and thing2() aren't identical, so there's no concise (lazy) way of doing so in that case