1. 程式人生 > >2018PHP春招面試--百度一面(電面)總結

2018PHP春招面試--百度一面(電面)總結

過載:1、在使用過載時只能通過相同的方法名、不同的引數形式實現。不同的引數型別可以是不同的引數型別,不同的引數個數,不同的引數順序(引數型別必須不一樣);
   2、不能通過訪問許可權、返回型別、丟擲的異常進行過載;
   3、方法的異常型別和數目不會對過載造成影響;

使用__call方法:

function __call ($name$args ) { if($name=='f') { $i=count($args); if (method_exists($this,$f='f'.$i)) { call_user_func_array(array($this,$f),$args
); } } }

重寫:

1.當一個父類和子類有一個方法,引數和名字完全一致,那麼子類方法會覆蓋父類的方法。

必須引數一致,才會實現方法覆蓋。當引數個數不一致,則會報錯(這就牽扯到上面說所得方法過載)。當方法名字不一致,就不會覆蓋,只是子類新定義的方法。

使用__construct():實現建構函式的過載:

function __construct() { echo "執行建構函式<br/>"; $a = func_get_args(); //獲取建構函式中的引數 $i count($a); if (method_exists($this,$f='__construct'
.$i)) { call_user_func_array(array($this,$f),$a); } }