2013-05-09 3 views
0

В этом простом классе я хочу, например, var_dump правило. Но это не работает. У кого-нибудь есть идея?Var_dump не работает

Хорошо, я внесла некоторые изменения. Он возвращает после сообщения true или false. Оно работает. Является ли этот код хорошим способом ООП?

class Forms_FormsValidation { 

private $_required; 
private $_minLength; 
private $_maxLength; 
private $_alphaNumeric; 
private $_errors; 

public function __construct($validate, $posts) { 
    array_pop($posts); 
    foreach ($validate as $arraykey => $value) {    
     foreach ($value as $key => $values) { 
      if (method_exists($this, "set$key")) {      
       $set = 'set'.ucfirst($key); 
       $get = 'get'.ucfirst($key); 
       $this->$set($posts["$arraykey"], $values); 
       if($this->$get() != '') { 
        $this->_errors[$arraykey] .= $this->$get(); 
       }      
      } 
     } 
    }   
} 

public function setValidation(){ 
    if (empty($this->_errors)){return TRUE;}return FALSE; 
} 
public function getRequired() { 
    return $this->_required; 
} 

public function setRequired($value, $ruleValue) { 
    if (empty($value) && $ruleValue == TRUE) { 
     $this->_required = 'newwwwwwwwww this field is required'; 
    } 
} 

public function getMinLength() { 
    return $this->_minLength; 
} 

public function setMinLength($value, $ruleValue) { 
    if (strlen($value) < $ruleValue) { 
     $this->_minLength = 'must be longer than' . $ruleValue . ''; 
    } 
} 

public function getMaxLength() { 
    return $this->_maxLength; 
} 

public function setMaxLength($value, $ruleValue) { 
    if (strlen($value) > $ruleValue) { 
     $this->_maxLength = 'must be shorter than' . $ruleValue . ''; 
    } 
} 

public function getAlphaNumeric() { 
    return $this->_alphaNumeric; 
} 

public function setAlphaNumeric($value, $ruleValue) { 
    if (!preg_match('/^([a-z0-9])+$/i', $value)) { 
     $this->_alphaNumeric = 'can only contain letters and numbers'; 
    } 
} 

} 

$validateUser  = array('user' => array ('required' => TRUE, 'minLength' => 2,'maxLength' => 15, 'alphaNumeric' => TRUE)); 
$validatePassword = array('password' => array ('required' => TRUE, 'minLength' => 2,'maxLength' => 15, 'alphaNumeric' => TRUE)); 
$_POST = array_map('strip_tags', $_POST); 
$formsValidation = new Forms_FormsValidation($validateUser, $_POST); 
$formsValidation = new Forms_FormsValidation($validatePassword, $_POST); 
if ($formsValidation->setValidation() === TRUE) {echo 'TRUE';} 
+2

Что вы имеете в виду «это не Работа" ? Он должен сказать «NULL» –

+0

Вы использовали var_dump в __construct(), где _validationRules пусты, поэтому он ничего не печатает. – CRDave

ответ

1

Использование var_dump в этой функции

public function getValidationRules() 
{ 
    var_dump($this->_validationRules); 
} 
0

var_dump($this->_validationRules); не работает, потому что вы пытаетесь вызвать его в конструкции класса. Эта конструкция только вызывается при создании экземпляра или объекта класса. На этот раз $this->_validationRules не содержит каких-либо значение, вы должны var_dump в

setValidationRules() 

функции.

Это означает, что когда вы делаете это

$formsValidation = new Forms_FormsValidation(); 

функция вызывается конструктор и что время не имеет значения в нем.

Попробуйте вместо этого для получения результатов дампа:

public function setValidationRules($validationRules) 
{ 
    $this->_validationRules = $validationRules; 
    var_dump($this->_validationRules); 
} 
0

Вызов var_dump($this->_validationRules); внутри конструктора ничего не показывает, как $this->_validationRules равно нулю в этой точке. Вы можете назвать это после вызова функции setValidationRules, он будет работать

0

var_dump() работает нормально в конструкторе, проблема и нужно инициализировать элемент перед созданием объект.

Пример:

В конструкторе:

public function __construct() { 
    $this->_validationRules = array('required' => TRUE, 'minLength' => 2,'maxLength' => 15, 'alphaNumeric' => TRUE); 
    var_dump($this->_validationRules); 
} 

Или еще и можно определить переменную в определениях членов класса следующим

class Forms_FormsValidation {   
    private $_validationRules = array('required' => TRUE, 'minLength' => 2,'maxLength' => 15, 'alphaNumeric' => TRUE); 
+0

Спасибо, но я хочу установить массив на другой странице и передать true массив внутри класса и работать с ним. Например, у меня есть поля пользователя и пароля, тогда у них есть оба разных правила проверки – Bas

Смежные вопросы