Christian Seiler: Polymorphie in PHP

Beitrag lesen

Hallo Daniel,

Und hier die komplett generische Lösung:

---- Pseudocode:

function mache (array $a) {
 ...
}

function mache (int $a, bool $b) {
 ...
}

function mache (string $a, string $b) {
 ...
}

---------

wird zu:

------ PHP-Code
function mache_array ($a) {
 ...
}

function mache_intbool ($a, $b) {
 ...
}

function mache_2string ($a, $b) {
 ...
}

function mache () {
  $arg_list = func_get_args ();
  if (count ($arg_list) == 1) {
    if (is_array ($arg_list[0])) {
      return mache_array ($arg_list[0]);
    } else {
      return;
    }
  } else if (count ($arg_list) == 2) {
    if (is_int ($arg_list[0]) && is_bool ($arg_list[1])) {
      return mache_intbool ($arg_list[0], $arg_list[1]);
    } else if (is_string ($arg_list[0]) && is_string ($arg_list[1])) {
      return mache_2string ($arg_list[0], $arg_list[1]);
    } else {
      return;
    }
  } else {
    return;
  }
}

-------

Diese Lösung ist zwar recht kompliziert, aber damit kann man *jede* Art von Polymorphie in PHP simulieren.

Viele Grüße,
Christian