メソッドのオーバーロード
PHP4ではメソッドのオーバーライドは出来るが、オーバーロードは出来ない。
PHP
- class Parent {
- function ride() {
- print 'p_ride';
- }
- function load() {
- print 'p_load';
- }
- }
- class Child extends Parent {
- function ride() {
- print 'c_ride';
- }
- function load($i) {
- print 'c_load';
- }
- }
- $c = new Child();
- $c->ride(); // c_ride
- $c->load(1);// c_load
- $c->load(); // 引数ないぞエラー
PHPでは同名メソッドの複数定義ができません。その代わり、引数のデフォルト値を設定できるので、一回の定義でオーバーロードのように振舞う事ができます。
function load($i = 1) {}
複数の引数にデフォルト値が設定されている場合は、最後から順に省略できます。
PHP
- function example($arg1, $arg2 = 1, $arg3 = 2) {
- }
- example(2, 4, 6);
- example(2, 4);// $arg3を省略
- example(2);// $arg2と$arg3を省略







