Chuyển tới nội dung chính
Phiên bản: 8.0.0

Errors

Class SKD_Error File: packages/skilldo/framework/src/Support/SKD_Error.php
Namespace: SkillDo\Support\SKD_Error
Alias ngắn: \SKD_Error

SkillDo Error class.

SKD_Error là một class giúp việc xử lý lỗi trong plugin và cms dễ dàng hơn nhiều.

Các phiên bản của SKD_Error lưu trữ mã lỗi và thông báo đại diện cho một hoặc nhiều lỗi và liệu một biến có phải là phiên bản của SKD_Error hay không có thể được xác định bằng cách sử dụng hàm is_skd_error().

SKD_Error Class Methods

Chúng ta sẽ tìm hiểu các phương thức lớp có sẵn trong lớp SKD_Error

The __construct Method

Đây là phương thức khởi tạo và được sử dụng để khởi tạo đối tượng SKD_Error. Nó chấp nhận bốn đối số (tất cả tùy chọn): $code, $message, $rule$data. Khi truyền $rule, thông báo được lưu với key $rule bên trong mã lỗi (dùng cho validation).

$errorMessage = new SKD_Error(int|string $code = '', string $message = '', ?string $rule = null, ?string $data = '');

The add Method

Bạn có thể sử dụng để thêm lỗi hoặc thêm thông báo bổ sung vào lỗi hiện có. Nó chấp nhận bốn đối số giống __construct: $code, $message, $rule$data.

$errorMessage->add(int|string $code, string $message);

The getErrorCodes Method

Bạn có thể sử dụng lấy danh sách toàn bộ mã code error

$errorMessage->getErrorCodes();

The getErrorCode Method

Trả về mã lỗi đầu tiên (hoặc chuỗi rỗng nếu không có lỗi nào).

$errorMessage->getErrorCode();

The getErrorMessages Method

Method trả về một mảng chứa tất cả các thông báo lỗi có trong đối tượng SKD_Error. Nếu bạn chuyển $code vào đối số đầu tiên, Method sẽ trả về thông báo lỗi cho mã lỗi đã cho.

$errorMessage->getErrorMessages(int|string $code = '');

The getErrorMessage Method

Trả về một thông báo lỗi đầu tiên của mã lỗi $code (nếu không truyền $code, dùng mã lỗi đầu tiên).

$errorMessage->getErrorMessage(int|string $code = '');

The first Method

Method trả về thông báo lỗi đầu tiên có trong đối tượng SKD_Error. Nếu có từ 2 thông báo lỗi trở lên method sẽ đính kèm số lượng error còn lại

$errorMessage->first();

The hasErrors Method

Nó được sử dụng để kiểm tra xem đối tượng SKD_Error có lỗi nào không.

if($errorMessage->hasErrors()) {
$errorMessage->first();
}

The remove Method

Method được sử dụng để xóa tất cả các thông báo lỗi liên quan đến mã lỗi đã cho, cùng với mọi dữ liệu lỗi khác cho mã đó.

$errorMessage->remove(int|string $code);

The errors Method

Trả về toàn bộ mảng errors thô ([code => [message, ...]]).

$errorMessage->errors();

The addData / getErrorData Methods

Mỗi mã lỗi có thể đính kèm một dữ liệu bổ sung. addData($data, $code) gán dữ liệu cho mã lỗi (nếu không truyền $code, dùng mã lỗi đầu tiên); getErrorData($code) truy xuất dữ liệu đó.

$errorMessage->addData(['field' => 'email'], 'invalid');
$data = $errorMessage->getErrorData('invalid');
// ['field' => 'email']

Ví dụ SKD_Error hoạt động như thế nào

Để sử dụng lớp SKD_Error để xử lý lỗi, bạn cần khởi tạo lớp này ngay từ đầu. Sau đó, bạn có thể sử dụng các phương thức lớp để thao tác với đối tượng SKD_Error.

Cách thêm dữ liệu vào đối tượng SKD_Error

Cách có thể khởi tạo đối tượng SKD_Error.

$errorMessage = new SKD_Error( 'cms', 'my favorite cms is SkillDo' );

Kiểm tra cấu trúc của đối tượng $errorMessage thông qua print_r() cho thấy:

SKD_Error Object
(
[errors] => Array
(
[cms] => Array
(
[0] => my favorite cms is SkillDo
)
)
[errorData] => Array
(
)
)

Để thêm hoặc nối thêm thông báo lỗi vào danh sách lỗi, sử dụng phương thức add, chấp nhận $code, $message và $data làm đối số.

$errorMessage = new SKD_Error( 'cms', 'my favorite cms is SkillDo' );
$errorMessage->add('framework', 'my favorite framework is Laravel' );

Sử dụng print_r() lần nữa, hãy xem cấu trúc và thông tin của đối tượng SKD_Error $errorMessage của chúng ta.

SKD_Error Object
(
[errors] => Array
(
[cms] => Array
(
[0] => my favorite cms is SkillDo
)
[framework] => Array
(
[0] => my favorite framework is Laravel
)
)
[errorData] => Array
(
)
)

Cách lấy dữ liệu từ đối tượng SKD_Error

Bạn có thể sử dụng phương thức getErrorCodes() để trả về một mảng gồm tất cả các mã lỗi.

dd($errorMessage->getErrorCodes());
/*
Output:
Array
(
[0] => cms
[1] => framework
)
*/

Phương thức getErrorMessages() truy xuất tất cả các thông báo lỗi khi đối số code không có, nhưng khi đối số $code được truyền, nó sẽ trả về các thông báo lỗi khớp với nó.

dd($errorMessage->getErrorMessages());
/*
Output:
Array
(
[0] => my favorite cms is SkillDo
[1] => my favorite framework is Laravel
)
*/

Khi bạn chuyển đối số đầu tiên, nó trông như thế này:

dd($errorMessage->getErrorMessages('cms'));
/*
Output:
Array
(
[0] => my favorite cms is SkillDo
)
*/

Phương thức first() truy xuất thông báo lỗi đầu tiên

dd($errorMessage->first());
/*
Output:
my favorite cms is SkillDo. (và 1 lỗi nữa)
*/

Cách sử dụng SKD_Error trong tình huống thực tế

$request = request();

if ($request->isMethod('post')) {
$error = new SKD_Error();
$email = $request->input('email');
$name = $request->input('name');
if(empty($email)) {
$error->add('empty', 'Email is required field.');
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error->add('invalid', 'Please enter valid email.');
}
if(empty($name)) {
$error->add('empty','Name is required field.');
}

if ($error->hasErrors()) {
echo $error->first();
}
else {
// continue with the submission data and redirect
}
}