se me ocurre implementando
interfaces de objetos o clases abstractas.
Puedes crear clases tipos, luego estas implementan una interfaz, cada varaible debiera ser un objeto tipo que implementa ciertea interfaz luego tienes la condición.
Ej:
Interface: miTipoInt
Código PHP:
interface MiTipoInterface
{
public function setValue($tipo);
public function getValue();
public function getType();
}
Código PHP:
class MiTipo implement MiTipoInterface
{
private $_tipo = null;
const TYPE = 'mi_tipo';
public function __construct($value){
if($value){
$this->setTipo($value);
} else {
throw new Exeption('El valor no puede ser vacio');
}
}
public function setValue($tipo){
$this->_tipo = $tipo;
}
public function getValue(){
return $this->_tipo;
}
public function getType(){
return self::TYPE;
}
Código PHP:
$obj1 = new MiTipo('Hola!');
$obj2 = new MiTipo('que');
$obj3 = new MiTipo('tal');
if($obj3 instanceof MiTipoInterface){
print 'el objeto ' .$obj3 ->getValue(). ' es del tipo ' . $obj3 ->getTipo();
}