[PHP]メンバメソッドで、変数の可視性を指定しなかった場合の振る舞いは?

PHPのクラスに含まれるメンバメソッドで,private/public等の可視性(visibility)を指定することができます。この可視性を明示的に指定しなかったときは、publicとみなされます。

PHPのオフィシャルドキュメント(http://php.net/manual/ja/language.oop5.visibility.php)にも下記の記載があります。

クラスメソッドは、public, private, または protected として定義します。
アクセス権を明示せずに宣言したメソッドは、 public となります。




以下に、動作を確認するためのサンプルコードを記載します。

<?php
class TestClass {
 
 
	// public function testFunc1()と同じ
	function testFunc1() {
		echo "hello world\n";
	}
 
	private function testFunc2() {
		echo "hello world\n";
	}
 
	public function testFunc3() {
		echo "hello world\n";
	}
 
	// public staticと宣言したものと同じ
	static function testFunc4() {
		echo "hello world\n";
	}
}
 
 
$testObj = new TestClass();
$testObj->testFunc1();		// public扱いなので、これはアクセス可能
#$testObj->testFunc2();		// これはエラーになる
$testObj->testFunc3();
 
TestClass::testFunc4();


関連記事

コメントを残す

メールアドレスが公開されることはありません。