What is the difference between public, private, and protected?

When and why should I use publicprivate, and protected functions and variables inside a class? What is the difference between them?
Examples:
// Public
public $variable;
public function doSomething() {
  // ...
}

// Private
private $variable;
private function doSomething() {
  // ...
}

// Protected
protected $variable;
protected function doSomething() {
  // ...
}


Solution : 

You use:
  • public scope to make that variable/function available from anywhere, other classes and instances of the object.
  • private scope when you want your variable/function to be visible in its own class only.
  • protected scope when you want to make your variable/function visible in all classes that extend current class including the parent class.
More: (For comprehensive information)

http://stackoverflow.com/questions/4361553/what-is-the-difference-between-public-private-and-protected