PHP Access Specifiers
There are three access specifiers in PHP: public, private, and protected.
Public
The access specifier public allows properties of a class to be accessed/modified outside the class without having to go through a get or set method. This allows for the least amount of protection for the property.
class Person { public $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } $p = new Person(); $p->setName("Bob Jones"); echo $p->name; // echos Bob Jones no error because it is public $p->name = "Joe Smith" ; // this sets the name to Joe Smith only because it is public
Private
Private is another access specifier that offers the most protection for a property. The property is only editable within the class itself.
class Person { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } $p = new Person(); $p->setName("Bob Jones"); echo $p->getName(); //this will echo Bob Jones echo $p->name; //can't access name this way, only through getName() $p->name = "Joe Smith" ; //can't set name this way either
Protected
The protected access specifier offers more protection then public but allows for a property to be accessed in its class and all other classes that extend its class.
class Person { protected $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } class Employee extends Person { private $employeeNumber; public function setEmployee($name, $employeeNumber) { $this->name = $name; //this is storing name in the person class $this->employeeNumber = $employeeNumber; } } $e = new Employee(); $e->setEmployee("Bob Jone",10000100); echo $e->name; // this would throw an error as it is only accessable through methods in Employee or Person class
No comments:
Post a Comment