php中類的不定引數使用示例
在類的例項化過程中,可以帶或不帶引數,那麼建構函式將如何處理這些引數呢?為了使建構函式具有通用性,在定義建構函式時,一般不帶引數,然後在其內部對引數情況進行處理。下面程式碼顯示了一個完整的通用Person類。
<?php
/**
* __construct() 不需設定引數,用php內建函式自動獲取
*
* 在下面示例中,在建構函式裡使用了內建函式func_get_args()獲取到所有的引數,
* func_num_args()獲取到引數的數量,然後使用判斷語句,執行其中一個使用者自定義方法,
* 從而實現了建構函式帶不定引數個數的執行方法。
*/
class Person{ // 定義Person類
private $name; // 定義name屬性
private $name2;
public function __construct() {
$array=func_get_args(); //獲取所有引數
$num=func_num_args(); //獲取引數的數量
if(method_exists($this, $f='func'.$num)){ //重要:檢查類中方法是否存在
call_user_func_array(array($this, $f), $array); // 執行一個方法與引數陣列
}
}
public function func0() {
$this->name = "沒有引數時輸出:唐僧";
}
public function func1($value) {
$this->name = $value;
}
public function func2($value1, $value2) {
$this->name = $value1;
$this->name2 = $value2;
}
function getName(){
return $this->name;
}
function getName2(){
$arr[0] = $this->name;
$arr[1] = $this->name2;
return $arr;
}
function setName($value){
$this->name = $value;
}
function __destruct() {
print "<br>物件被銷燬";
}
}
$person = new Person();
echo $person->getName() . "<br>";
$person2 = new Person("孫悟空");
echo $person2->getName() . "<br>";
$person3 = new Person("豬八戒", "沙和尚");
print_r($person3->getName2());
?>
執行後的效果圖:
以上內容希望幫助到大家,更多PHP大廠PDF面試文件,PHP進階架構視訊資料,PHP精彩好文免費獲取可以關注公眾號:PHP開源社群,或者訪問:
「其他文章」
- 基於Nginx的負載均衡原理與實戰
- PHP控制反轉(IOC)和依賴注入(DI)
- 深入理解PHP7核心之Reference
- php中類的不定引數使用示例
- php單例模式的常見應用場景
- laravel 配置MySQL讀寫分離
- PHP的垃圾回收機制(建議收藏)
- 【shell指令碼】字串和陣列的使用
- PHP-FPM是什麼東東?
- PHP 編寫守護程序
- PHP命令列指令碼接收傳入引數的三種方式
- php專案中類的自動載入
- 複習下Linux去除重複項命令uniq
- 深入理解PHP核心:變數及資料型別
- Swoole協程與傳統fpm同步模式比較
- PHP中Session ID的實現原理
- 寫一手好SQL,該從哪裡入手最好?
- PHP命令列指令碼接收傳入引數的三種方式
- 使用 Shell 在多伺服器上批量操作
- PHP實現使用者異地登入提醒功能的方法