downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  

<Constructors and DestructorsScope Resolution Operator (::)>
Last updated: Thu, 26 Jun 2008

Visibility

The visibility of a property or method can be defined by prefixing the declaration with the keywords: public, protected or private. Public declared items can be accessed everywhere. Protected limits access to inherited and parent classes (and to the class that defines the item). Private limits visibility only to the class that defines the item.

Members Visibility

Class members must be defined with public, private, or protected.

Example #1 Member declaration

<?php
/**
 * Define MyClass
 */
class MyClass
{
  
public $public = 'Public';
  
protected $protected = 'Protected';
  
private $private = 'Private';

   function
printHello()
   {
       echo
$this->public;
       echo
$this->protected;
       echo
$this->private;
   }
}

$obj = new MyClass();
echo
$obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private


/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
  
// We can redeclare the public and protected method, but not private
  
protected $protected = 'Protected2';

   function
printHello()
   {
       echo
$this->public;
       echo
$this->protected;
       echo
$this->private;
   }
}

$obj2 = new MyClass2();
echo
$obj2->public; // Works
echo $obj2->private; // Undefined
echo $obj2->protected; // Fatal Error
$obj2->printHello(); // Shows Public, Protected2, Undefined

?>

Note: The PHP 4 method of declaring a variable with the var keyword is still supported for compatibility reasons (as a synonym for the public keyword). In PHP 5 before 5.1.3, its usage would generate an E_STRICT warning.

Method Visibility

Class methods must be defined with public, private, or protected. Methods without any declaration are defined as public.

Example #2 Method Declaration

<?php
/**
 * Define MyClass
 */
class MyClass
{
  
// Declare a public constructor
  
public function __construct() { }

  
// Declare a public method
  
public function MyPublic() { }

  
// Declare a protected method
  
protected function MyProtected() { }

  
// Declare a private method
  
private function MyPrivate() { }

  
// This is public
  
function Foo()
   {
      
$this->MyPublic();
      
$this->MyProtected();
      
$this->MyPrivate();
   }
}

$myclass = new MyClass;
$myclass->MyPublic(); // Works
$myclass->MyProtected(); // Fatal Error
$myclass->MyPrivate(); // Fatal Error
$myclass->Foo(); // Public, Protected and Private work


/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
  
// This is public
  
function Foo2()
   {
      
$this->MyPublic();
      
$this->MyProtected();
      
$this->MyPrivate(); // Fatal Error
  
}
}

$myclass2 = new MyClass2;
$myclass2->MyPublic(); // Works
$myclass2->Foo2(); // Public and Protected work, not Private

class Bar
{
  
public function test() {
      
$this->testPrivate();
      
$this->testPublic();
   }

  
public function testPublic() {
       echo
"Bar::testPublic\n";
   }
  
  
private function testPrivate() {
       echo
"Bar::testPrivate\n";
   }
}

class
Foo extends Bar
{
  
public function testPublic() {
       echo
"Foo::testPublic\n";
   }
  
  
private function testPrivate() {
       echo
"Foo::testPrivate\n";
   }
}

$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
               // Foo::testPublic
?>



add a noteadd a note User Contributed Notes
Visibility
There are no user contributed notes for this page.




<Constructors and DestructorsScope Resolution Operator (::)>
Last updated: Thu, 26 Jun 2008
show source | credits | sitemap | contact | advertising | mirror sites
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: http://phpbuilder.com/
Last updated: Tue Nov 1 20:20:59 2005 EST
Columns / Articles | Tips / Quickies | News | News Linking and RSS Feeds | Shared Code Library
Mail Archives | Support / Discussion Forums | Get Started! Links | Contribute! | Docs