De hecho a mi parecer es el mismo método setter el que debe de validar que tipo de dato, por ejemplo en Zend Framework cuando llaman al set, hace la validación por ejemplo:
Código PHP:
Ver originalpublic function setRequest($request)
{
require_once 'Zend/Loader.php';
Zend_Loader::loadClass($request);
}
$request = new $request();
}
if (!$request instanceof Zend_Controller_Request_Abstract) {
require_once 'Zend/Controller/Exception.php';
throw new Zend_Controller_Exception('Invalid request class');
}
$this->_request = $request;
return $this;
}
La idea es que el setter mismo valide que tipo de datos tenga para que la clase sea consistente.
Saludos.