:operationName: function
:visibility: private

include::../why.adoc[]

It also raises on unused protected functions in PHP enumerations. In PHP enumerations private and protected are equivalent because inheritance is not allowed.

=== Code examples

==== Noncompliant code example

[source,php,diff-id=1,diff-type=noncompliant]
----
class Foo {
  private function __construct() {}   // Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.

  public static function doSomething() {
    $foo = new Foo();
    ...
  }

  private function unusedPrivateFunction() {}  // Noncompliant
}

enum ExampleEnum {
  case FIRST_CASE;

  private function unusedPrivateFunction() {} // Noncompliant
  protected function unusedProtectedFunction() {} // Noncompliant
}
----

==== Compliant solution

[source,php,diff-id=1,diff-type=compliant]
----
class Foo {
  private function __construct() {}   // Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.

  public static function doSomething() {
    $foo = new Foo();
  }
}
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
