rules = $rules; } /** * @return array */ public function validatorRuleDefault() { return [ 'email' => [ 'rule' => static function ($data) { return !empty($data['email']) && is_string($data['email']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'Email'), ], 'firstname' => [ 'rule' => static function ($data) { return !empty($data['firstname']) && is_string($data['firstname']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'First name'), ], 'lastname' => [ 'rule' => static function ($data) { return !empty($data['lastname']) && is_string($data['lastname']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'Last name'), ], 'website' => [ 'rule' => static function ($data) { return !empty($data['website']) && is_string($data['website']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'Website'), ], 'company' => [ 'rule' => static function ($data) { return !empty($data['company']) && is_string($data['company']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'company'), ], 'phone' => [ 'rule' => static function ($data) { return !empty($data['phone']) && is_string($data['phone']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'phone'), ], 'address' => [ 'rule' => static function ($data) { return !empty($data['address']) && is_string($data['address']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'Address'), ], 'city' => [ 'rule' => static function ($data) { return !empty($data['city']) && is_string($data['city']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'city'), ], 'state' => [ 'rule' => static function ($data) { return !empty($data['state']) && is_string($data['state']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'state'), ], 'zip' => [ 'rule' => static function ($data) { return !empty($data['zip']) && is_string($data['zip']); }, 'required' => false, 'message' => sprintf('%s should be a non empty String', 'zip'), ], ]; } /** * @param array $data * * @return bool */ public function isValid($data = []) { $this->data = $data; $validatorMethod = 'validatorRule' . ucfirst($this->rules); if (!method_exists($this, $validatorMethod)) { throw new HubspotException(sprintf('Validator method %s is missing', $validatorMethod)); } $rules = $this->{$validatorMethod}(); foreach ($rules as $field => $rule) { if (array_key_exists('rule', $rule)) { $validation = call_user_func($rule['rule'], $this->data); if (!$validation && (!empty($this->data[$field]) || !empty($rule['required']))) { return false; } } } return true; } public function getData() { return array_filter($this->data, static function ($value) { return $value !== null && trim($value) !== ''; }); } }