Skip to content

Instantly share code, notes, and snippets.

@MadaraUchiha
Created November 9, 2013 00:05
Show Gist options
  • Save MadaraUchiha/7379626 to your computer and use it in GitHub Desktop.
Save MadaraUchiha/7379626 to your computer and use it in GitHub Desktop.
abstract class Entity {
/* snip */
public function bindValidation($field, callable $validator) {
$this->validationFunctions[$field] = $validator;
}
public function validate() {
foreach ($this->validationFunction as $field => $validator) {
if ($validator($this->getField($field)) === false) {
return false;
}
}
return true;
}
}
class SomeService {
public function createUser($username, $password) {
$user = $this->entityFactory->create("user");
$user->setUserame($username);
$user->bindValidation("username", function($username) { return !is_empty($username); });
$user->setPassword($password);
$user->bindValidation("password", function($password) { return (!is_empty($password) && strlen($password) > 6); });
if (!$user->validate()) {
throw new ValidationException("...");
}
$mapper = $this->mapperFactory->create("user");
$mapper->map($user);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment