Understanding Public, Private, and Protected Methods in PHP

Rumman Ansari   Software Engineer   2024-07-18 09:10:31   5646  Share
Subject Syllabus DetailsSubject Details
☰ TContent
☰Fullscreen

Methods can be public, private or protected. Public means that methods can be accessed everywhere, private means methods can be accessed by the class that defines the member and protected means methods can be accessed only within the class itself and by inherited and parent classes.

Example:

Syntax

<span class="pln">

</span><span class="pun">&lt;?</span><span class="pln">php
</span><span class="com">// Define a class</span><span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Myclass</span><span class="pln">
 </span><span class="pun">{</span><span class="pln">
 </span><span class="com">// Declare a public method public function my_public_method()</span><span class="pln">
 </span><span class="pun">{</span><span class="pln">
 echo </span><span class="str">"This is a Public method"</span><span class="pun">;</span><span class="pln"> 
 </span><span class="pun">}</span><span class="pln"> 
 </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> my_private_method</span><span class="pun">()</span><span class="pln">
 </span><span class="pun">{</span><span class="pln">
 echo </span><span class="str">"This is a Private method"</span><span class="pun">;</span><span class="pln"> 
 </span><span class="pun">}</span><span class="pln">
 </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> my_protected_method</span><span class="pun">()</span><span class="pln">
 </span><span class="pun">{</span><span class="pln">
 echo </span><span class="str">"This is a Protected method"</span><span class="pun">;</span><span class="pln"> 
 </span><span class="pun">}</span><span class="pln"> 
 </span><span class="com">// This is public</span><span class="pln">
 </span><span class="kwd">function</span><span class="pln"> test</span><span class="pun">()</span><span class="pln">
 </span><span class="pun">{</span><span class="pln">
 $this</span><span class="pun">-&gt;</span><span class="pln">my_public_method</span><span class="pun">();</span><span class="pln">
 $this</span><span class="pun">-&gt;</span><span class="pln">my_private_method</span><span class="pun">();</span><span class="pln">
 $this</span><span class="pun">-&gt;</span><span class="pln">my_protected_method</span><span class="pun">();</span><span class="pln">
 </span><span class="pun">}</span><span class="pln">
 </span><span class="pun">}</span><span class="pln">
 $obj </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">MyClass</span><span class="pun">;</span><span class="pln">
 $obj</span><span class="pun">-&gt;</span><span class="pln">my_public_method</span><span class="pun">();</span><span class="pln"> </span><span class="com">//Display This is a Public method</span><span class="pln">
 $obj</span><span class="pun">-&gt;</span><span class="pln">my_private_method</span><span class="pun">();</span><span class="com">//Fatal error: Call to private method Myclass::my_private_method() from context '' in F:\wamp\www..</span><span class="pln">
 $obj</span><span class="pun">&gt;</span><span class="pln">my_protected_method</span><span class="pun">();</span><span class="com">//Fatal error: Call to undefined function my_protected_method() in F:\wamp\www..</span><span class="pln">
 $obj</span><span class="pun">-&gt;</span><span class="pln">test</span><span class="pun">();</span><span class="pln"> </span><span class="com">//Display This is a Public methodThis is a Private methodThis is a Protected method</span><span class="pln">
</span><span class="pun">?&gt;</span><span class="pln">


</span>

Note: PHP uses inheritance in it's object model and when you extend a class, the subclass inherits all of the public and protected methods from the parent class. When we will discuss the inheritance, you will get more information about protected properties and methods.


No Questions Data Available.
No Program Data.

Stay Ahead of the Curve! Check out these trending topics and sharpen your skills.