Hola,
Eso no es posible... deberías hacer un recast del objeto, llamarlo desde un principio como Cliente o Admon con un condicional, o de la forma siguiente:
Código PHP:
<?php
class Usuario {
private $name;
private $email;
private $pwd;
function __construct($name,$email,$pwd) {
$this->name = $name;
$this->email = $email;
$this->pwd = $pwd;
}
function getName() {
return $this->name;
}
function getEmail() {
return $this->email;
}
public function getCliente() {
return new Cliente($this->name,$this->email,$this->pwd);
}
public function getAdmon() {
return new Admon($this->name,$this->email,$this->pwd);
}
}
class Cliente extends Usuario {
private $cart;
public function setCart($array) {
$this->cart = $array;
}
public function getCart() {
return $this->cart;
}
}
class Admon extends Usuario {
private $permisson;
public function setPermisson($permisson) {
$this->permisson = $permisson;
}
public function getPermisson() {
return $permisson;
}
}
$usuario = new Usuario("Pepito","[email protected]",sha1("contraseña de ejemplo"));
var_dump($usuario);
$cliente = $usuario->getCliente();
var_dump($cliente);
$admon = $usuario->getAdmon();
var_dump($admon);
?>
Así llamas primero al usuario y si tienes un método que verifique si es usuario o administrador puedes retornar directamente $admon o $cliente al llamar a usuario...
Espero que te haya ayudado!