Я получаю следующее сообщение об ошибке: Фатальная ошибка:Фатальная ошибка: Вызов функции члена ГЭТ() на не-объект в
вызов функции члена ГЭТ() на не-объект в
Я создал публичную функцию get(), чтобы получить данные sql, которые были запрошены.
В настоящее время я работаю над этапом проверки, и я включил функцию get, чтобы проверить базу данных, чтобы узнать, зарегистрирована ли учетная запись электронной почты.
Я создал следующие правила с помощью массива:
$validation = $validate->check($_POST, array(
'fName' => array(
'required' => true,
'min' => 2,
'max' => 20),
'lName' => array(
'required' => true,
'min' => 2,
'max' => 20),
'regEmail' => array(
'required' => true,
'min' => 2,
'max' => 50,
'unique' => 'customers'),
'regEmailCon' => array(
'required' => true,
'min' => 2,
'max' => 50,
'matches' => 'regEmail'),
'regPword' => array(
'required' => true,
'min' => 6,
'max' => 12),
'regPwordCon' => array(
'required' => true,
'matches' => 'regPword'),
));
здесь код, который используется для выполнения проверки:
public function check($source, $items = array()){
foreach($items as $item => $rules){
foreach ($rules as $rule => $rule_value){
$value = trim($source[$item]);
$item = escape($item);
if($rule === 'required' && empty($value)){
$this->addError("{$item} is required");
}elseif (!empty($value)){
switch ($rule){
case 'min':
if(strlen($value) < $rule_value){
$this->addError("{$item} must be a minimum of {$rule_value} characters.");
}
break;
case'max':
if(strlen($value) > $rule_value){
$this->addError("{$item} must be a maximum of {$rule_value} characters.");
}
break;
case 'matches':
if ($value != $source[$rule_value]){
$this->addError("{$rule_value} must match {$item}");
}
break;
case'unique':
$check = $this->_db->get($rule_value, array("$item", '=', "$value"));
if ($check->count()){
$this->addError("{$item} already exists.");
}
break;
}
}
}
}
Все случаи работать, пока не дойдете до ГЭТ() Function. Я не уверен, в чем проблема. Какие-либо предложения?
Алиби, Мои извинения,
вот что я сделал в начале класса:
class Validation{
private $_passed = false,
$_errors= array(),
$_db = null;
public function _construct(){
$this->_db = DB::getInstance();
}/*end _construct*/
путем добавления собственной переменной _db, я надеялся сохранить DB :: GetInstance() функция из одноэлементного шаблона.
Благодаря миллион
что такое $ this -> _ db обратитесь к? Что-то в рамках этой функции? –
Одноэлементный шаблон не является хорошей практикой. Вместо этого создайте новый объект базы данных и передайте его конструктору. Эта хорошая практика называется инъекцией зависимостей. – m59