<?php
/** * define myclass
*/class myclass
}$obj = new myclass();
echo $obj->public; // 這行能被正常執行
echo $obj->protected; // 這行會產生乙個致命錯誤
echo $obj->private; // 這行也會產生乙個致命錯誤
$obj->printhello(); // 輸出 public、protected 和 private
/** * define myclass2
*/class myclass2 extends myclass
}$obj2 = new myclass2();
echo $obj2->public; // 這行能被正常執行
echo $obj2->private; // 未定義 private
echo $obj2->protected; // 這行會產生乙個致命錯誤
$obj2->printhello(); // 輸出 public、protected2 和 undefined
?>
<?php
/** * define myclass
*/class myclass
// 宣告乙個公有的方法
public function mypublic()
// 宣告乙個受保護的方法
protected function myprotected()
// 宣告乙個私有的方法
private function myprivate()
// 此方法為公有
function foo()
}$myclass = new myclass;
$myclass->mypublic(); // 這行能被正常執行
$myclass->myprotected(); // 這行會產生乙個致命錯誤
$myclass->myprivate(); // 這行會產生乙個致命錯誤
$myclass->foo(); // 公有,受保護,私有都可以執行
/** * define myclass2
*/class myclass2 extends myclass
}$myclass2 = new myclass2;
$myclass2->mypublic(); // 這行能被正常執行
$myclass2->foo2(); // 公有的和受保護的都可執行,但私有的不行
class bar
public function testpublic()
private function testprivate()
}class foo extends bar
private function testprivate()
}$myfoo = new foo();
$myfoo->test(); // bar::testprivate
// foo::testpublic
?>
<?php
class
test
private function
bar()
public function
baz(
test $other)}
$test
= new
test
('test'
);$test
->
baz(new
test
('other'
));?>
以上例程會輸出:
string(5) "hello"accessed the private method.
PHP 的訪問控制(可見性) 類常量和繼承
protected 受保護的 private 私有的 被定義為 protected 的類成員,可以在其自身 子類和父類的內部訪問。被定義為 private 的類成員,只能在其定義的類內部訪問。class a function printhello 在父類中訪問子類的成員,子類的 public pro...
低可見性覆蓋高可見性
本文只討論 public,protected,private,internal 和 virtual一起使用時的問題。1.公共基類定義 public virtual 方法,子類覆蓋時不能降低其可見性。namespace accessmodifier public class baseclass pub...
控制符號的可見性
在普通的c語言中,如果您希望將函式或者變數限制在當前檔案中,需要對其使用static關鍵字。然而,在乙個包含很多檔案的共享庫中,如果您希望某個符號可以被共享庫內部的幾個檔案訪問,而又不提供給外部,則對符號進行隱藏處理就會比較困難。大多數的聯結器都提供一些便利的方法來隱藏或者顯示模組中所有的符號,但如...