Can I extend a class using more than 1 class in PHP?

EDIT: 2020 PHP 5.4+ and 7+

As of PHP 5.4.0 there are “Traits” – you can use more traits in one class, so the final deciding point would be whether you want really an inheritance or you just need some “feature”(trait). Trait is, vaguely said, an already implemented interface that is meant to be just used.

Currently accepted answer by @Franck will work but it is not in fact multiple inheritance but a child instance of class defined out of scope, also there is the `__call()` shorthand – consider using just `$this->childInstance->method(args)` anywhere you need ExternalClass class method in “extended” class.

Exact answer

Currently accepted answer by @Franck will work but it is not in fact multiple inheritance but a child instance of class defined out of scope, also there is the `__call()` shorthand – consider using just `$this->childInstance->method(args)` anywhere you need ExternalClass class method in “extended” class.

No you can’t, respectively, not really, as manual of extends keyword says:

An extended class is always dependent on a single base class, that is,
multiple inheritance is not supported.

Real answer

However as @adam suggested correctly this does NOT forbids you to use multiple hierarchal inheritance.

You CAN extend one class, with another and another with another and so on…

So pretty simple example on this would be:

class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...

Important note

As you might have noticed, you can only do multiple(2+) intehritance by hierarchy if you have control over all classes included in the process – that means, you can’t apply this solution e.g. with built-in classes or with classes you simply can’t edit – if you want to do that, you are left with the @Franck solution – child instances.

…And finally example with some output:

class A{
  function a_hi(){
    echo "I am a of A".PHP_EOL."<br>".PHP_EOL;  
  }
}

class B extends A{
  function b_hi(){
    echo "I am b of B".PHP_EOL."<br>".PHP_EOL;  
  }
}

class C extends B{
  function c_hi(){
    echo "I am c of C".PHP_EOL."<br>".PHP_EOL;  
  }
}

$myTestInstance = new C();

$myTestInstance->a_hi();
$myTestInstance->b_hi();
$myTestInstance->c_hi();

Which outputs

I am a of A 
I am b of B 
I am c of C