No entendiste bien o quizás no me explique bien. Eso sí se hacerlo.
Lo que quiero hacer es...
$objecto->a();
$objecto->a()->b();
$objecto->a()->c();
O sea un ejemplo
$nombre = $objecto->obtener("nombre"); //Sin validacion pero asignar el valor del campo nombre sobre $nombre o sea $nombre = $_POST[$campo];
$nombre = $objecto->obtener("nombre")-validar(); //Lo mismo que arriba pero usando el mètodo de validar(); para validar sabiendo si está vacío o no
Actualmente estoy usando
namespace Forms;
class Forms {
private $temporal_var, $Validate;
function __construct() {
$this->Validate = new Forms\Validate($this);
}
function Field($caption, $field) {
$this->temporal_var = $_POST[$field];
return $this;
}
function Validate($type = false) {
if($type=="Email") { return $this->Validate->Email(); }
else if($type=="Numbers") { return $this->Validate->Numbers(); }
else if($type=="AlphaNumerics") { return $this->Validate->AlphaNumerics(); }
else if($type=="Password") { return $this->Validate->Password(EMPTY_PASSWORD, SHORT_PASSWORD, NUMBER_PASSWORD, LETTER_PASSWORD, CAPITAL_PASSWORD); }
else { return $this->Validate->CheckIfEmpty(); }
}
function Get() {
return $this->temporal_var;
}
}
Hasta ahora todo bien. Pero lo logro de esta forma
$form = new Forms();
$nombre_validado = $form->Field("Primer nombre", "nombre")->Validate(); //Esto si funciona y valida y asigna el valor del campo a $nombre_validado
$nombre_sin_validar = $form->Field("Primer nombre", "nombre")->Get(); //Esto lo use como alternativa pero mi idea no es usarlo sino que quiero que no se use ->Get();. Pero bueno, esta encadenada lo que hace es no validar nada pero si asignar el valor del campo a $nombre_sin_validar
Lo que quiero lograr es que el código quede así
$form = new Forms();
$nombre_validado = $form->Field("Primer nombre", "nombre")->Validate(); //Esto si funciona y valida y asigna el valor del campo a $nombre_validado
$nombre_sin_validar = $form->Field("Primer nombre", "nombre"); //Sin el ->Get, y que no valide y que devuelva como return el valor del cacmpo y a su vez que se peuda encadenar
Sé que se puede hacer porque lo he visto en varios Object Relational Mappings, y en varios frameworks como Laravel, CakePHP, PHPixie.
O sea, otro ejemplo serìa con Object Relatonal Mapping
$sql->select("table"); //Selecciona todo de la tabla "table" y devuelve los resultados del select * from table
//Pero quiero que se pueda encadenar también
$sql->select("table")->where("id", 1); //Selecciona donde "id" sea 1 en la tabla "table" y devolver el resultado de select * from table where id = 1
Salu2