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

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.  
  18. $c = new Child();
  19. $c->ride(); // c_ride
  20. $c->load(1);// c_load
  21. $c->load(); // 引数ないぞエラー

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

複数の引数にデフォルト値が設定されている場合は、最後から順に省略できます。
function example($arg1, $arg2=1, $arg3=2)
example(2, 4, 6);
example(2, 4);
example(2);

  • Search

Copyright (c) 2004-2008 MT312 All Rights Reserved.
Powered by WordPress ME