[DOC-CVS] [phd] master: GH-248: Add `function` keyword to `<methodsynopsis>`. (#252)

[email protected] (Jordi Kroon via GitHub) Mon, 18 May 2026 12:29:38 +0000
Newsgroups php.doc.cvs
Message-ID <[email protected]>
Author: Jordi Kroon (jordikroon)
Committer: GitHub (web-flow)
Pusher: jordikroon
Date: 2026-05-18T14:29:35+02:00

Commit: https://github.com/php/phd/commit/3c077f9cf36f291f864822e66cc47d3a1704aaab
Raw diff: https://github.com/php/phd/commit/3c077f9cf36f291f864822e66cc47d3a1704aaab.diff

GH-248: Add `function` keyword to `<methodsynopsis>`. (#252)

* Add function keyword to <methodsynopsis>

Changed paths:
  M  phpdotnet/phd/Package/PHP/XHTML.php
  M  tests/package/php/bug49102-1.phpt
  M  tests/package/php/bug_doc-en_GH-3179.phpt
  M  tests/package/php/class_and_method_link_rendering_001.phpt
  M  tests/package/php/class_rendering_001.phpt
  M  tests/package/php/class_rendering_002.phpt
  M  tests/package/php/enum_link_rendering.phpt
  M  tests/package/php/exception_rendering_001.phpt
  M  tests/package/php/exception_rendering_002.phpt
  M  tests/package/php/packagesynopsis_rendering_001.phpt
  M  tests/package/php/type_rendering_001.phpt
  M  tests/package/php/type_rendering_002.phpt
  M  tests/package/php/type_rendering_003.phpt


Diff:

diff --git a/phpdotnet/phd/Package/PHP/XHTML.php b/phpdotnet/phd/Package/PHP/XHTML.php
index a50b1b23..9e83ed25 100644
--- a/phpdotnet/phd/Package/PHP/XHTML.php
+++ b/phpdotnet/phd/Package/PHP/XHTML.php
@@ -10,7 +10,12 @@ abstract class Package_PHP_XHTML extends Package_Generic_XHTML {
         'chapter'               => 'format_container_chunk',
         'colophon'              => 'format_chunk',
         'function'              => 'format_function',
-        'methodname'            => 'format_function',
+        'methodname'            => array(
+            /* DEFAULT */          'format_function',
+            'methodsynopsis'      => 'format_methodsynopsis_function',
+            'constructorsynopsis' => 'format_methodsynopsis_function',
+            'destructorsynopsis'  => 'format_methodsynopsis_function',
+        ),
         'methodparam'           => 'format_methodparam',
         'methodsynopsis'        => 'format_methodsynopsis',
         'legalnotice'           => 'format_chunk',
@@ -840,6 +845,16 @@ public function format_function($open, $tag, $attrs, $props) {
         return "</span>";
     }
 
+    public function format_methodsynopsis_function($open, $tag, $attrs, $props) {
+        if ($open) {
+            return
+                '<span class="modifier">function</span> '
+                . $this->format_function($open, $tag, $attrs, $props);
+        }
+
+        return $this->format_function($open, $tag, $attrs, $props);
+    }
+
     public function format_function_text($value, $tag, $display_value = null) {
         if ($this->getRole() === "function_replaceable") {
             return $this->TEXT($value);
diff --git a/tests/package/php/bug49102-1.phpt b/tests/package/php/bug49102-1.phpt
index 316809c7..98dc9cef 100644
--- a/tests/package/php/bug49102-1.phpt
+++ b/tests/package/php/bug49102-1.phpt
@@ -46,23 +46,23 @@ Content:
 
         <div class="classsynopsisinfo classsynopsisinfo_comment">/* Methods */</div>
         <div class="constructorsynopsis dc-description">
-            <span class="methodname"><strong>__construct</strong></span>()</div>
+            <span class="modifier">function</span> <span class="methodname"><strong>__construct</strong></span>()</div>
 
-        <div class="methodsynopsis dc-description"><span class="methodname"><strong>setIteratorMode</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$mode</code></span>): <span class="type"><a href="language.types.void.html" class="type void">void</a></span></div>
+        <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>setIteratorMode</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$mode</code></span>): <span class="type"><a href="language.types.void.html" class="type void">void</a></span></div>
 
 
         <div class="classsynopsisinfo classsynopsisinfo_comment">/* Inherited methods */</div>
-        <div class="methodsynopsis dc-description"><span class="methodname"><strong>SplDoublyLinkedList::bottom</strong></span>(): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
+        <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>SplDoublyLinkedList::bottom</strong></span>(): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
 
-        <div class="methodsynopsis dc-description"><span class="methodname"><strong>SplDoublyLinkedList::count</strong></span>(): <span class="type"><a href="language.types.integer.html" class="type int">int</a></span></div>
+        <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>SplDoublyLinkedList::count</strong></span>(): <span class="type"><a href="language.types.integer.html" class="type int">int</a></span></div>
 
-        <div class="methodsynopsis dc-description"><span class="methodname"><strong>SplDoublyLinkedList::current</strong></span>(): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
+        <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>SplDoublyLinkedList::current</strong></span>(): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
 
-        <div class="methodsynopsis dc-description"><span class="methodname"><strong>SplDoublyLinkedList::getIteratorMode</strong></span>(): <span class="type"><a href="language.types.integer.html" class="type int">int</a></span></div>
+        <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>SplDoublyLinkedList::getIteratorMode</strong></span>(): <span class="type"><a href="language.types.integer.html" class="type int">int</a></span></div>
 
-        <div class="methodsynopsis dc-description"><span class="methodname"><strong>SplDoublyLinkedList::offsetExists</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$index</code></span>): <span class="type"><a href="language.types.boolean.html" class="type bool">bool</a></span></div>
+        <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>SplDoublyLinkedList::offsetExists</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$index</code></span>): <span class="type"><a href="language.types.boolean.html" class="type bool">bool</a></span></div>
 
-        <div class="methodsynopsis dc-description"><span class="methodname"><strong>SplDoublyLinkedList::offsetGet</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$index</code></span>): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
+        <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>SplDoublyLinkedList::offsetGet</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$index</code></span>): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
 
     }</div>
 
diff --git a/tests/package/php/bug_doc-en_GH-3179.phpt b/tests/package/php/bug_doc-en_GH-3179.phpt
index 64a50d86..fae4d632 100644
--- a/tests/package/php/bug_doc-en_GH-3179.phpt
+++ b/tests/package/php/bug_doc-en_GH-3179.phpt
@@ -20,7 +20,7 @@ Filename: bug_doc-en_GH-3179.html
 Content:
 <div id="bug_doc-en_GH-3179" class="refentry">
  <div class="refsect1 unknown-1" id="refsect1-bug_doc-en_GH-3179-unknown-1">
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>method_name</strong></span>(): <span class="type"><a href="language.types.void.html" class="type void">void</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>method_name</strong></span>(): <span class="type"><a href="language.types.void.html" class="type void">void</a></span></div>
 
  </div>
 
diff --git a/tests/package/php/class_and_method_link_rendering_001.phpt b/tests/package/php/class_and_method_link_rendering_001.phpt
index f1f72648..b2746ea5 100644
--- a/tests/package/php/class_and_method_link_rendering_001.phpt
+++ b/tests/package/php/class_and_method_link_rendering_001.phpt
@@ -64,13 +64,13 @@ Content:
  
  <div class="section">
   <p class="para">3. Class linking (non-FQN) in method/function parameter and return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">Extension\Namespace\Existing_Class</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">Extension\Namespace\Existing_Class</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">Extension\Namespace\Existing_Class</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">Extension\Namespace\Existing_Class</a></span></div>
 
  </div>
  
  <div class="section">
   <p class="para">4. Class linking (FQN) in method/function parameter and return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">\Extension\Namespace\Existing_Class</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">\Extension\Namespace\Existing_Class</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">\Extension\Namespace\Existing_Class</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="extensionname.classpage.html" class="type Extension\Namespace\Existing_Class">\Extension\Namespace\Existing_Class</a></span></div>
 
  </div>
 
diff --git a/tests/package/php/class_rendering_001.phpt b/tests/package/php/class_rendering_001.phpt
index 0448efcf..8499974f 100644
--- a/tests/package/php/class_rendering_001.phpt
+++ b/tests/package/php/class_rendering_001.phpt
@@ -27,7 +27,7 @@ Content:
 
      <div class="refsect1 description" id="refsect1-classname.construct-description">
       Description
-      <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$firstParameter</code><span class="initializer"> = &quot;now&quot;</span></span>)</div>
+      <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$firstParameter</code><span class="initializer"> = &quot;now&quot;</span></span>)</div>
 
       <p class="para rdfs-comment">
        Returns new a ClassName object.
diff --git a/tests/package/php/class_rendering_002.phpt b/tests/package/php/class_rendering_002.phpt
index 302dbe6f..998deef8 100644
--- a/tests/package/php/class_rendering_002.phpt
+++ b/tests/package/php/class_rendering_002.phpt
@@ -27,7 +27,7 @@ Content:
 
      <div class="refsect1 description" id="refsect1-classname.construct-description">
       Description
-      <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$firstParameter</code><span class="initializer"> = &quot;now&quot;</span></span>)</div>
+      <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$firstParameter</code><span class="initializer"> = &quot;now&quot;</span></span>)</div>
 
       <p class="para rdfs-comment">
        Returns new a ClassName object.
diff --git a/tests/package/php/enum_link_rendering.phpt b/tests/package/php/enum_link_rendering.phpt
index 1b59946b..a8b6cc78 100644
--- a/tests/package/php/enum_link_rendering.phpt
+++ b/tests/package/php/enum_link_rendering.phpt
@@ -41,13 +41,13 @@ Content:
 
  <div class="section">
   <p class="para">2. Enum linking (non-FQN) in method/function parameter and return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">Enum\Namespace\Existing_Enum</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">Enum\Namespace\Existing_Enum</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">Enum\Namespace\Existing_Enum</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">Enum\Namespace\Existing_Enum</a></span></div>
 
  </div>
  
  <div class="section">
   <p class="para">3. Enum linking (FQN) in method/function parameter and return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">\Enum\Namespace\Existing_Enum</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">\Enum\Namespace\Existing_Enum</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">\Enum\Namespace\Existing_Enum</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">\Enum\Namespace\Existing_Enum</a></span></div>
 
  </div>
 
diff --git a/tests/package/php/exception_rendering_001.phpt b/tests/package/php/exception_rendering_001.phpt
index 9b6b440e..11ad3ce8 100644
--- a/tests/package/php/exception_rendering_001.phpt
+++ b/tests/package/php/exception_rendering_001.phpt
@@ -27,7 +27,7 @@ Content:
 
       <div class="refsect1 description" id="refsect1-exceptionname.construct-description">
        Description
-       <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="methodname"><strong>ExceptionName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$propertyName</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
+       <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ExceptionName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$propertyName</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
 
        <p class="para rdfs-comment">
         Constructs the Exception.
diff --git a/tests/package/php/exception_rendering_002.phpt b/tests/package/php/exception_rendering_002.phpt
index 327feb50..8eed9073 100644
--- a/tests/package/php/exception_rendering_002.phpt
+++ b/tests/package/php/exception_rendering_002.phpt
@@ -27,7 +27,7 @@ Content:
 
       <div class="refsect1 description" id="refsect1-exceptionname.construct-description">
        Description
-       <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="methodname"><strong>ExceptionName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$propertyName</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
+       <div class="constructorsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ExceptionName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$propertyName</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
 
        <p class="para rdfs-comment">
         Constructs the Exception.
diff --git a/tests/package/php/packagesynopsis_rendering_001.phpt b/tests/package/php/packagesynopsis_rendering_001.phpt
index 6e8ba6b5..a9ffe9d9 100644
--- a/tests/package/php/packagesynopsis_rendering_001.phpt
+++ b/tests/package/php/packagesynopsis_rendering_001.phpt
@@ -42,7 +42,7 @@ Content:
 
 
     <div class="methodsynopsis dc-description">
-     <span class="modifier">public</span> <span class="methodname"><strong>floor</strong></span>(): <span class="type">BcMath\Number</span></div>
+     <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>floor</strong></span>(): <span class="type">BcMath\Number</span></div>
 
    }
   </div>
diff --git a/tests/package/php/type_rendering_001.phpt b/tests/package/php/type_rendering_001.phpt
index ad47bb16..7174e9b0 100644
--- a/tests/package/php/type_rendering_001.phpt
+++ b/tests/package/php/type_rendering_001.phpt
@@ -22,49 +22,49 @@ Content:
 
  <div class="section">
   <p class="para">%d. Function/method with no return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>()</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>()</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Function/method with one return type - never</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(): <span class="type"><a href="language.types.never.html" class="type never">never</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(): <span class="type"><a href="language.types.never.html" class="type never">never</a></span></div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Function/method with one return type - void</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(): <span class="type"><a href="language.types.void.html" class="type void">void</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(): <span class="type"><a href="language.types.void.html" class="type void">void</a></span></div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Function/method with one return type - mixed</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(): <span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span></div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Function/method with union return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(): <span class="type"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span>|<span class="type"><a href="language.types.float.html" class="type float">float</a></span>|<span class="type"><a href="language.types.singleton.html" class="type false">false</a></span></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(): <span class="type"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span>|<span class="type"><a href="language.types.float.html" class="type float">float</a></span>|<span class="type"><a href="language.types.singleton.html" class="type false">false</a></span></span></div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Function/method with nullable return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(): <span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.object.html" class="type object">object</a></span></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(): <span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.object.html" class="type object">object</a></span></span></div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Function/method with nullable union return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(): <span class="type"><span class="type"><a href="language.types.string.html" class="type string">string</a></span>|<span class="type"><a href="language.types.array.html" class="type array">array</a></span>|<span class="type"><a href="language.types.resource.html" class="type resource">resource</a></span>|<span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span>|<span class="type"><a href="language.types.iterable.html" class="type iterable">iterable</a></span>|<span class="type"><a href="language.types.singleton.html" class="type true">true</a></span>|<span class="type"><a href="language.types.null.html" class="type null">null</a></span></span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(): <span class="type"><span class="type"><a href="language.types.string.html" class="type string">string</a></span>|<span class="type"><a href="language.types.array.html" class="type array">array</a></span>|<span class="type"><a href="language.types.resource.html" class="type resource">resource</a></span>|<span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span>|<span class="type"><a href="language.types.iterable.html" class="type iterable">iterable</a></span>|<span class="type"><a href="language.types.singleton.html" class="type true">true</a></span>|<span class="type"><a href="language.types.null.html" class="type null">null</a></span></span></div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Function/method with unknown return type</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(): <span class="type">UnknownType</span></div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(): <span class="type">UnknownType</span></div>
 
  </div>
 
diff --git a/tests/package/php/type_rendering_002.phpt b/tests/package/php/type_rendering_002.phpt
index 2e99387a..0f3d0207 100644
--- a/tests/package/php/type_rendering_002.phpt
+++ b/tests/package/php/type_rendering_002.phpt
@@ -22,61 +22,61 @@ Content:
 
  <div class="section">
   <p class="para">1. Function/method with no parameters</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>()</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>()</div>
 
  </div>
 
  <div class="section">
   <p class="para">2. Function/method with one parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$anything</code></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$anything</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">3. Function/method with optional parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code><span class="initializer"> = 0</span></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code><span class="initializer"> = 0</span></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">4. Function/method with nullable parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.float.html" class="type float">float</a></span></span> <code class="parameter">$value</code></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.float.html" class="type float">float</a></span></span> <code class="parameter">$value</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">5. Function/method with nullable optional parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.string.html" class="type string">string</a></span></span> <code class="parameter">$options</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.string.html" class="type string">string</a></span></span> <code class="parameter">$options</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">6. Function/method with reference parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter reference">&$reference</code></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter reference">&$reference</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">7. Function/method with union type parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.iterable.html" class="type iterable">iterable</a></span>|<span class="type"><a href="language.types.resource.html" class="type resource">resource</a></span>|<span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span>|<span class="type"><a href="language.types.null.html" class="type null">null</a></span></span> <code class="parameter">$option</code></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.iterable.html" class="type iterable">iterable</a></span>|<span class="type"><a href="language.types.resource.html" class="type resource">resource</a></span>|<span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span>|<span class="type"><a href="language.types.null.html" class="type null">null</a></span></span> <code class="parameter">$option</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">8. Function/method with intersection type parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type">Countable</span>&amp;<span class="type">Traversable</span></span> <code class="parameter">$option</code></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type"><span class="type">Countable</span>&amp;<span class="type">Traversable</span></span> <code class="parameter">$option</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">9. Function/method with DNF (Disjunctive Normal Form) type parameter</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type">(<span class="type">Countable</span>&amp;<span class="type">Traversable</span>)|<span class="type">DOMAttr</span></span> <code class="parameter">$option</code></span>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<span class="methodparam"><span class="type">(<span class="type">Countable</span>&amp;<span class="type">Traversable</span>)|<span class="type">DOMAttr</span></span> <code class="parameter">$option</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">10. Function/method with more than three parameters</p>
-  <div class="methodsynopsis dc-description"><span class="methodname"><strong>function_name</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.html" class="type bool">bool</a></span> <code class="parameter">$isSomething</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter">$list</code></span><br>)</div>
+  <div class="methodsynopsis dc-description"><span class="modifier">function</span> <span class="methodname"><strong>function_name</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.html" class="type bool">bool</a></span> <code class="parameter">$isSomething</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter">$list</code></span><br>)</div>
 
  </div>
 
diff --git a/tests/package/php/type_rendering_003.phpt b/tests/package/php/type_rendering_003.phpt
index 18aa17dd..c3ef92f3 100644
--- a/tests/package/php/type_rendering_003.phpt
+++ b/tests/package/php/type_rendering_003.phpt
@@ -22,61 +22,61 @@ Content:
 
  <div class="section">
   <p class="para">%d. Constructor with no parameters, no return type</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="methodname"><strong>ClassName::__construct</strong></span>()</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>()</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with one parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">private</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$anything</code></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">private</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.html" class="type mixed">mixed</a></span> <code class="parameter">$anything</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with optional parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">protected</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code><span class="initializer"> = 0</span></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">protected</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code><span class="initializer"> = 0</span></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with nullable parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.float.html" class="type float">float</a></span></span> <code class="parameter">$value</code></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.float.html" class="type float">float</a></span></span> <code class="parameter">$value</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with nullable optional parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">private</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.string.html" class="type string">string</a></span></span> <code class="parameter">$options</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">private</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.html" class="type null">?</a></span><span class="type"><a href="language.types.string.html" class="type string">string</a></span></span> <code class="parameter">$options</code><span class="initializer"> = &quot;&quot;</span></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with reference parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">protected</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter reference">&$reference</code></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">protected</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter reference">&$reference</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with union type parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.iterable.html" class="type iterable">iterable</a></span>|<span class="type"><a href="language.types.resource.html" class="type resource">resource</a></span>|<span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span>|<span class="type"><a href="language.types.null.html" class="type null">null</a></span></span> <code class="parameter">$option</code></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.iterable.html" class="type iterable">iterable</a></span>|<span class="type"><a href="language.types.resource.html" class="type resource">resource</a></span>|<span class="type"><a href="language.types.callable.html" class="type callable">callable</a></span>|<span class="type"><a href="language.types.null.html" class="type null">null</a></span></span> <code class="parameter">$option</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with intersection type parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type">Countable</span>&amp;<span class="type">Traversable</span></span> <code class="parameter">$option</code></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type">Countable</span>&amp;<span class="type">Traversable</span></span> <code class="parameter">$option</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with DNF (Disjunctive Normal Form) type parameter</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type">(<span class="type">Countable</span>&amp;<span class="type">Traversable</span>)|<span class="type">DOMAttr</span></span> <code class="parameter">$option</code></span>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<span class="methodparam"><span class="type">(<span class="type">Countable</span>&amp;<span class="type">Traversable</span>)|<span class="type">DOMAttr</span></span> <code class="parameter">$option</code></span>)</div>
 
  </div>
 
  <div class="section">
   <p class="para">%d. Constructor with more than three parameters</p>
-  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">private</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.html" class="type bool">bool</a></span> <code class="parameter">$isSomething</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter">$list</code></span><br>)</div>
+  <div class="constructorsynopsis dc-description"><span class="modifier">final</span> <span class="modifier">private</span> <span class="modifier">function</span> <span class="methodname"><strong>ClassName::__construct</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.html" class="type int">int</a></span> <code class="parameter">$count</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.html" class="type string">string</a></span> <code class="parameter">$name</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.boolean.html" class="type bool">bool</a></span> <code class="parameter">$isSomething</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.html" class="type array">array</a></span> <code class="parameter">$list</code></span><br>)</div>
 
  </div>