首頁 > 後端開發 > php教程 > 如何在 PHP 中提取一個簡單的驗證器類別?

如何在 PHP 中提取一個簡單的驗證器類別?

WBOY
發布: 2024-07-17 13:57:12
原創
601 人瀏覽過

How to extract a simple validator class in PHP?

我之前學習如何建立表單並驗證它,然後將表單資料儲存在資料庫中。今天,我學習如何從表單驗證程式碼中提取 Validator 類,使其可重複使用且模組化。

介紹

驗證器類別是一種將檢查使用者輸入是否正確的函數分組在一起的方法。它有助於確保使用者輸入的資料符合某些規則或標準。

純函數

純函數是不依賴外在世界的狀態或值的函數。換句話說,一個純函數:

  • 給定相同的輸入,始終傳回相同的輸出。
  • 沒有副作用,這表示它不會修改任何外在狀態。
  • 不依賴任何外部狀態,僅依賴其輸入參數。

驗證器類別

Validator 類別包含用於驗證輸入資料的純函數。在今天的程式碼中,函數是:

  • 字串(): 檢查輸入值是否為指定長度範圍內的字串。
    • 使用trim()刪除空白字元
    • 使用 strlen() 檢查輸入資料的長度
  • 電子郵件(): 使用 filter_var 函數驗證電子郵件地址。
<?php

class Validator {
    public static function string($value, $min = 1, $max = INF) {
        $value = trim($value);
        return strlen($value) >= $min && strlen($value) <= $max;
    }

    public static function email($value) {
        return filter_var($value, FILTER_VALIDATE_EMAIL);
    }
}
登入後複製

使用驗證器類別

要使用驗證器類,我們將其包含在 PHP 檔案中,並使用 Class Name::Method Syntax 呼叫其方法。然後我們可以使用條件語句來檢查輸入資料是否有效。例如:

如果電子郵件有效,我們可以將使用者移至下一個畫面。否則,我們可以顯示錯誤訊息。

<?php

require 'Validator.php';

$config = require 'config.php';
$db = new Database($config['database']);

$heading = 'Create Note';
if(! Validator::email('mujtabaofficial247@gmail.com')){
dd('that is not a valid email');}

登入後複製

由於給定的電子郵件正確,然後繼續下一個程式碼。如果輸入主體有效,我們可以將其插入資料庫。否則,我們可以顯示錯誤訊息。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $errors = [];

    if (! Validator::string($_POST['body'], 1, 1000)) {
        $errors['body'] = 'A body of no more than 1,000 characters is required.';
    }

    if (empty($errors)) {
        $db->query('INSERT INTO notes(body, user_id) VALUES(:body, :user_id)', [
            'body' => $_POST['body'],
            'user_id' => 1
        ]);
    }
}

require 'views/note-create.view.php';

登入後複製

使用驗證器類別的好處

使用驗證器類別有幾個好處,包括:

  • 可重用性:驗證器函數可以在整個應用程式中重複使用。
  • 模組化:驗證器邏輯與主應用程式程式碼分離。
  • 更容易維護:可以更新或修改驗證器功能,而不影響主應用程式程式碼。

結論

透過提取一個簡單的驗證器類,我們可以確保我們的使用者輸入資料在整個應用程式中得到一致的驗證。
我希望你已經清楚地理解了這一點。

以上是如何在 PHP 中提取一個簡單的驗證器類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板