The other day I was adding a private method to a PHP class, and I kept getting an unusual error. After multiple debugging attempts, I did a search on the Web and found the problem. (My problem for forgetting that PHP is different.) Like class properties the keyword $this needs to be involved.
Most readers of this blog probably know this already, but I’m including this little post to remind myself as much as anyone. Essentially, when you enter a private method in a class, it must be addressed as:
$this->pvtMethod();
In an of itself, that’s no great shakes, but if you don’t know that because you’ve immigrated to PHP from some other language such as C++, Java, ActionScript 3.0 or C#, you’re going to have a big problem with design patterns. That’s because in some design patterns you’re going to want to have private methods in some of the design’s participant classes.
Why Private Methods?
Why bother with a private method? Why bother with any private accessor or visibility? That’s easy:
Private visibility encapsulates your property or method.
As objects, we want everything in our classes to be treated like an integral part. If we want to give other classes access, we use getters and setters with public accessors. For example, consider the following program example:
<?php ini_set("display_errors","2"); ERROR_REPORTING(E_ALL); class PrivateProperties { private $privateProp; function __construct() { print "From the constructor function <br />"; } public function displayMethod() { print "This is from a public method.<br />"; $this->privateProp=$this->privateMethod(); print $this->privateProp; } private function privateMethod() { return "(Private Method): This only can be called from the class itself <br />"; } } $showtext=new PrivateProperties(); $showtext->displayMethod(); |
results:
From the constructor function
This is from a public method.
(Private Method): This only can be called from the class itself
The private method cannot be accessed directly from a call to it, but it can be launched from a public method within the same class. The function, displayMethod(), is public, but as part of the class, it can call the private methods in the same class. That’s exactly what it does.
While working with the private method, we don’t want to neglect a property with private visibility. In the same way that the $this statement is used with private methods, we also use it with private properties. As noted, this isn’t rocket science, but PHP is different from other languages, and this little reminder might come in handy when dealing with private visibility.



Recent Comments