プロパティまたはメソッドのアクセス権 (visibility) は、
  キーワード: public, protected または private を指定することにより、
  定義できます。
  public として定義されたアイテムには、どこからでもアクセス可能です。
  protected は、派生クラスや親クラス (とそれを定義するクラス自体)
  にアクセスを制限します。private は、
  それを定義するクラスのみにアクセス権を制限します。
 
   クラスのメンバは、public, private, または protected
   として定義されなくてはなりません。
  
   
例 19-10. メンバの宣言 
<?php /**  * 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; // 動作します echo $obj->protected; // Fatal エラー echo $obj->private; // Fatal エラー $obj->printHello(); // Public、Protected そして Private を表示します
 
  /**  * MyClass2 の定義  */ class MyClass2 extends MyClass {     // public および protected メソッドは再定義できますが、     // private はできません。     protected $protected = 'Protected2';
      function printHello()     {         echo $this->public;         echo $this->protected;         echo $this->private;     } }
  $obj2 = new MyClass2(); echo $obj->public; // 動作します echo $obj2->private; // 未定義です echo $obj2->protected; // Fatal エラー $obj2->printHello(); // Public、Protected2 を表示しますが Private は表示しません
  ?>
 |  
  | 
  注意: 
    キーワード var で変数を宣言する
    PHP 4 の方法は、互換性を保つために今でもサポートされています
    (これは public と同じ扱いになります)。PHP 5.1.3 より前では、
    これを使用すると E_STRICT
    警告が発生します。
   
   クラスメソッドは、public, private, または protected
   として定義される必要があります。どの宣言も有さないメソッドは、
   public として定義されます。
  
   
例 19-11. メソッドの宣言 
<?php /**  * MyClass の定義  */ class MyClass {     // コンストラクタは public でなければなりません     public function __construct() { }
      // public メソッドの宣言     public function MyPublic() { }
      // protected メソッドの宣言     protected function MyProtected() { }
      // private メソッドの宣言     private function MyPrivate() { }
      // これは public となります     function Foo()     {         $this->MyPublic();         $this->MyProtected();         $this->MyPrivate();     } }
  $myclass = new MyClass; $myclass->MyPublic(); // 動作します $myclass->MyProtected(); // Fatal エラー $myclass->MyPrivate(); // Fatal エラー $myclass->Foo(); // Public、Protected および Private が動作します
 
  /**  * MyClass2 の定義  */ class MyClass2 extends MyClass {     // これは public となります     function Foo2()     {         $this->MyPublic();         $this->MyProtected();         $this->MyPrivate(); // Fatal エラー     } }
  $myclass2 = new MyClass2; $myclass2->MyPublic(); // 動作します $myclass2->Foo2(); // Public および Protected は動作しますが、Private は動作しません ?>
 |  
  |