プロパティまたはメソッドのアクセス権 (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 は動作しません
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 ?>
|
|
東京デリヘル 池袋デリヘル 新宿デリヘル 渋谷デリヘル 品川デリヘル
鶯谷デリヘル 大塚デリヘル 立川デリヘル 町田デリヘル 横浜デリヘル 埼玉デリヘル
千葉デリヘル 大阪デリヘル 神戸デリヘル 京都デリヘル 名古屋デリヘル デリヘル
アダルトレンタルサーバー アダルトレンタルサーバー 表札 断熱塗料 UGUISU
大阪 老人ホーム 京都 老人ホーム 兵庫 老人ホーム 和歌山 老人ホーム 滋賀 老人ホーム
奈良 老人ホーム 東京 老人ホーム 神奈川 老人ホーム 千葉 老人ホーム 埼玉 老人ホーム 老人ホーム