Código
<?php /** * User: Dark_Stone * Date: 12/06/2017 * Time: 23:50 */ class ValidationClass { protected static function canBeValidated($dato) { /* * Este metodo devuelve false y la clase hija que se haga cargo entonces retornará true * Indicando que se puede hacer cargo de la validacion. * */ return false; } public static function validar($datos) { //Instancia la clase $validate = new ValidationClass(); //Obtener los hijos en un array $childs = $validate->getChilds(); //Recorrer el array buscando a ver quien puede validar el dato foreach ($childs as $child) { if ($child::canBeValidated($datos)) return $child::validar($datos); } } private function getChilds() { //Metodo para determinar los hijos /*Un array vacio para guardar los nombres de las clases que retornen true * a la clase padre */ //Obtener la direccion de los archivos de validacion //recorrer la carpeta buscando quien coincida con la clase while (false !== ($entry = $folder->read())) if ($entry != '..' && $entry != '.' && $entry != 'ValidationClass.php') { include $entry; //Incluimos cada archivo $ischildren = false; foreach ($parents as $campo => $valor) if ($valor == 'ValidationClass') { $ischildren = true; break; } if ($ischildren) $array[] = $className; } return $array; } }
Y la clase isTextValidationClass por ejemplo, tiene el código de la siguiente forma (aun está en construccion)
Código
<?php /** * User: Dark_Stone * Date: 14/06/2017 * Time: 17:53 */ class isTextValidationClass extends ValidationClass { protected static function canBeValidated($datos) { } public static function validar($dato) { { return "Es un string"; //Es un ejemplo de que hacer si es string } } }
Eso me permite hacer algo como esto
Código
$datos = "Esto es un String" //Ejemplo de string $validar = ValidationClass::validar($datos); echo $validar;
Pero mi pregunta (ya era hora de que hiciera una despues de tanta explicacion) es: Como puedo validar en 2 métodos a la vez? o sea, saber por ejemplo si es string y si tiene mas de 15 caracteres? Usando 2 clases isTextValidationClass y MaxLengthValidationClass. Pense en pasarlo como parametros
Código
Pero no estoy seguro de cómo hacerlo. ¿Alguna idea por favor?
$datos = "Esto es un String" //Ejemplo de string $anotherValidation = "MaxLengthValidationClass"; $validar = ValidationClass::validar($datos,$anotherValidation); echo $validar;