What is function overloading and overriding in php?

Overloading is defining functions that have similar signatures, yet have different parameters. Overriding is only pertinent to derived classes, where the parent class has defined a method and the derived class wishes to override that method.

In PHP, you can only overload methods using the magic method __call.

An example of overriding:

myFoo()); //"Foo"
echo($bar->myFoo()); //"Bar"


Overloading Example

class overload {
    public $name;
    public function __construct($agr) {
        $this->name = $agr;
    public function __call($methodname, $agrument) {
         if($methodname == 'sum2') {

          if(count($agrument) == 2) {
              $this->sum($agrument[0], $agrument[1]);
          if(count($agrument) == 3) {

              echo $this->sum1($agrument[0], $agrument[1], $agrument[2]);
    public function sum($a, $b) {
        return $a + $b;
    public function sum1($a,$b,$c) {

        return $a + $b + $c;
$object = new overload('Sum');
echo $object->sum2(1,2,3);