メソッドのオーバーロード

PHP4ではメソッドのオーバーライドは出来るが、オーバーロードは出来ない。

PHP

  1. class Parent {
  2.   function ride() {
  3.     print 'p_ride';
  4.   }
  5.   function load() {
  6.     print 'p_load';
  7.   }
  8. }
  9. class Child extends Parent {
  10.   function ride() {
  11.     print 'c_ride';
  12.   }
  13.   function load($i) {
  14.     print 'c_load';
  15.   }
  16. }
  17. $c = new Child();
  18. $c->ride(); // c_ride
  19. $c->load(1);// c_load
  20. $c->load(); // 引数ないぞエラー

PHPでは同名メソッドの複数定義ができません。その代わり、引数のデフォルト値を設定できるので、一回の定義でオーバーロードのように振舞う事ができます。
function load($i = 1) {}

複数の引数にデフォルト値が設定されている場合は、最後から順に省略できます。

PHP

  1. function example($arg1, $arg2 = 1, $arg3 = 2) {
  2. }
  3. example(2, 4, 6);
  4. example(2, 4);// $arg3を省略
  5. example(2);// $arg2と$arg3を省略

コメントは受け付けていません。