『壹』 php受保護的類和私有類什麼區別

受保護的繼承後可以訪問,私有的只能在該類中訪問,不會被繼承訪問
class Man{
protected $name='lee';//受保版護
private $age=123;//私有
function __construct(){
echo $this->name;//lee
echo $this->age;//123

}

}
class Girl extends Man{
function __construct(){
echo $this->name;//lee
echo $this->age;//不會出權現123,

}

}

new Man();

new Girl();

『貳』 [php]private public protected 三者沒弄明白

public 表示全局,類內部外部子類都可以訪問;

private表示私有的,只有本類內部可以使用;

protected表示受保護的,只有本類或子類或父類中可以訪問;

<?
//父類
class father{
public function a(){
echo "function a";
}
private function b(){
echo "function b";
}
protected function c(){
echo "function c";
}
}
//子類
class child extends father{
function d(){
parent::a();//調用父類的a方法
}
function e(){
parent::c(); //調用父類的c方法
}
function f(){
parent::b(); //調用父類的b方法
}

}
$father=new father();
$father->a();
$father->b(); //顯示錯誤 外部無法調用私有的方法 Call to protected method father::b()
$father->c(); //顯示錯誤 外部無法調用受保護的方法Call to private method father::c()

$chlid=new child();
$chlid->d();
$chlid->e();
$chlid->f();//顯示錯誤 無法調用父類private的方法 Call to private method father::b()
?>

『叄』 PHP私有屬性繼承問題

你設置了 private $Pname; 為私有變數 就導致了你的派生類是無法訪問父類的成員可以使用專 protected $Pname 這樣就可以使得派生屬類和基類都能范圍該類的成員。 ===你初始化$student=new Student('1','zhangsan','18','男','9月23');後 不用重載parent::IT(); 這樣只能echo出父類的那句話。。你要的是覆蓋的效果 所以直接echo "$this->Pname 的工作是學生<br>"; 就可以了

『肆』 我想輸出php類中的私有屬性的值,怎麼輸出不出來呢

私有屬性無法在實例化的時候輸出,只能在類的內部輸出

『伍』 private 在PHP里到底有什麼用

主要是編碼時候的引用與封裝, 工作中一般別的地方用不到的變數函數就用private, 減少找代碼的時候查詢量太大, 因為寫大了代碼很多, 一個一個看就是浪費時間了, 用不到的寫的時候就private一下, 不寫後面找bug的時候就蛋疼了。。。
還有就是封裝庫

『陸』 php私有函數如何調用

要先搞清楚類和對象的關系
將一個類實例化後就變成對象,私有函數只能在類內部使用,不能在類外,也就是對象上使用,也不能在子類中使用,如定義一個parent類
class parent{
private function _justForMyself(){
echo "這是私有函數,只能在類內部使用哦";
}
public function forAll(){
echo "這是公共函數,在類外和子類都可以使用";
echo "因為我在類內,可以調用私有函數";
$this->_justForMyself();
}
}
現在我們實例化這個類,讓他變成一個對象
$obj = new parent();//實例化parent類,讓他變成一個對象並賦值給$obj
$obj->forAll();//forAll是公共函數,因此這里可以執行看到輸出
$obj->_justForMyself();//_justForMyself是私有函數,類外不可使用,因此執行到這里會報錯

『柒』 PHP中private和public還有protected的區別

public:聲明方來法和屬性可以被隨意訪問源。
Protected:聲明的方法和屬性只能被類本身和其繼承子類訪問。
private:只能被定義屬性和方法的類訪問。

private 是完全私有的,只有當前類中的成員能訪問到.
protected 是受保護的,只有當前類的成員與繼承該類的類才能訪問.

protected的訪問權介於public和private之間,實際上三者的區別就是許可權問題,private和protected區別主要體現在其繼承類的訪問許可權上,這些你可以自己編寫一個程序,寫個類,編譯一下你就很清楚他們許可權的區別了。

私有成員private member
只能被成員函數和類的友元訪問
實行信息隱藏的類把其數據成員聲明為private

被保護成員protected member
對派生類derived class 就像public 成員一樣
對其他程序則表現得像private

『捌』 php中怎麼類外訪問私有方法

你問的是私有方法還是私有屬性?

你說的__get __set 是訪問和設置屬性用的。

__call才是訪問方法用的。

但這兩種都需要修改原始類,既然有這個許可權了,那私有方法有什麼必要定義呢?

另外一種獲取私有屬性或調用私有方法的思路是通過反射:

//MyClass這個類中包含了一個名為myFun的私有方法
classMyClass{

private$tmp='hello';

privatefunctionmyFun()
{
echo$this->tmp.''.'world!';
}
}

//通過類名MyClass進行反射
$ref_class=newReflectionClass('MyClass');

//通過反射類進行實例化
$instance=$ref_class->newInstance();

//通過方法名myFun獲取指定方法
$method=$ref_class->getMethod('myFun');

//設置可訪問性
$method->setAccessible(true);

//執行方法
$method->invoke($instance);

//獲取屬性
$property=$ref_class->getProperty('tmp');

//列印屬性
var_mp($property);

不知道你提這個單純是個問題,還是有別的需求,可以多看看php手冊學習一下。

php 訪問控制

php 反射