== Why is this an issue?

Explicitly declaring method visibility provides clarity and improves code readability. This leads to:

* Simplifying access to and use of the methods for other developers, enhancing the maintainability of the codebase.
* Promoting the principle of encapsulation, allowing you to control the accessibility of methods and prevent unintended access or modifications from external code.

By explicitly stating the visibility, you establish a clear contract for how the methods should be interacted with, making it easier to understand and reason about the behavior of the code.

Available access modifiers are:

* ``++private++`` - access allowed only within the same class
* ``++protected++`` - access allowed to the class and its child classes
* ``++public++`` - unfettered access by all (default)

== How to fix it

=== Code examples

==== Noncompliant code example

[source,php,diff-id=1,diff-type=noncompliant]
----
function foo(){...}
----

==== Compliant solution

[source,php,diff-id=1,diff-type=compliant]
----
private function foo(){...}
----

== Resources
=== Documentation

* https://www.php.net/manual/en/language.oop5.visibility.php[PHP Manual - Visibility]
* https://www.w3schools.com/php/php_oop_access_modifiers.asp[W3Schools - Access Modifiers]

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

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

include::../message.adoc[]

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