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

時間 2021-08-30 11:15:23

1樓:匿名使用者

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

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

__call才是訪問方法用的。

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

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

//myclass這個類中包含了一個名為myfun的私有方法

class myclass

}//通過類名myclass進行反射

$ref_class = new reflectionclass('myclass');

//通過反射類進行例項化

$instance  = $ref_class->newinstance();

//通過方法名myfun獲取指定方法

$method = $ref_class->getmethod('myfun');

//設定可訪問性

$method->setaccessible(true);

//執行方法

$method->invoke($instance);

//獲取屬性

$property = $ref_class->getproperty('tmp');

//列印屬性

var_dump($property);

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

php 訪問控制

php 反射

2樓:匿名使用者

利用closure::bind()

此方法是php 5.4.0中新增的。

php私有函式如何呼叫

3樓:

要先搞清楚復類和物件的關制系

將一個類例項化後就變成物件,私有函式只能在類內部使用,不能在類外,也就是物件上使用,也不能在子類中使用,如定義一個parent類

class parent

public function forall()

}現在我們例項化這個類,讓他變成一個物件

$obj = new parent();//例項化parent類,讓他變成一個物件並賦值給$obj

$obj->forall();//forall是公共函式,因此這裡可以執行看到輸出

$obj->_justformyself();//_justformyself是私有函式,類外不可使用,因此執行到這裡會報錯

4樓:匿名使用者

私有函式不能在函式外部呼叫的,只能在內部用

關於php類成員屬性宣告和訪問的問題

團毒七七 你總共提了三個問題,三個問題都是關於訪問許可權控制的,建議你將物件導向的訪問許可權控制的那部分給學習一下。1 類裡的變數是否一定要宣告為成員屬性,答 不一定,在一個類中,有建構函式 屬性 方法 未在方法和建構函式中宣告的變數為屬性,屬性是體現這一個類 物件 的特性的描述,他是這個類的特性的...

php如何在類中呼叫另檔案的類,PHP如何在類中呼叫另一個檔案的類

你的這種定義方法是錯誤的,在類定義中不能直接包含檔案或例項化物件,只能對類中屬性進行定義 請參考天南 46926125 寫的demo php demo code class b function d obj new b obj d day忘不掉的痛 在a類中 把 a 定義為公有的成員屬性。class...

php,子類無法訪問父類私有屬性,子類例項化再賦值後,子類所新增的新成員屬性不存在

這兩句沒問題 student1 dance student1 say 問題出在這三句 student1 name zhangsan student1 age 20 student1 gender male 這三個都是私有成員,不能直接賦值,可以在基類中實現公共的set方法或者建構函式來賦值。 隋龍飛...