Browse project documentation

Error code reference

Abzar0.8.1View sourceEnglish / Persian

Library error and warning codes with their exact Persian messages.

Every failure abzar reports carries an Eram\Abzar\Validation\ErrorCode. The value (NATIONAL_ID.EMPTY) is stable API: renaming or removing a case is a breaking change (see the API stability policy). Dispatch on the code, not on the message text.

$code->message() returns the Persian message shown below. Several codes share one message on purpose: an end user doesn’t need to know which check failed, but your code can still tell them apart.

Kinds

  • error: in ValidationResult::errorCodes(). The input is invalid and isValid() is false.
  • warning: in ValidationResult::warningCodes(). The input is valid, but a lookup (city, bank, operator, plate letter) found nothing, so that detail field is generally null (an unknown plate letter uses PlateType::OTHER). isValid() is true and isStrictlyValid() is false.
  • thrown: carried by an exception. Every abzar exception extends AbzarException, so catch (AbzarException $e) and read $e->errorCode().

A validator’s from() throws ValidationException when validate() would return invalid. Its errorCode() is the first error code, and result() gives the full ValidationResult.

use Eram\Abzar\Validation\ErrorCode;
use Eram\Abzar\Validation\NationalId;

$r = NationalId::validate('1234567890');
$r->errorCodes();              // [ErrorCode::NATIONAL_ID_INVALID_CHECKSUM]
$r->errorCodes()[0]->value;    // 'NATIONAL_ID.INVALID_CHECKSUM'
$r->errorCodes()[0]->message(); // 'کد ملی نامعتبر است'

For a complete exception-handling example, see errors and warnings.

Validators

CodePersian messageEmitted byKind
NATIONAL_ID.EMPTYکد ملی نمی‌تواند خالی باشدNationalIderror
NATIONAL_ID.WRONG_LENGTHکد ملی باید ۱۰ رقم باشدNationalIderror
NATIONAL_ID.LIKELY_TRUNCATEDکد ملی باید ۱۰ رقم باشد؛ ممکن است صفرهای ابتدایی حذف شده باشدNationalIderror
NATIONAL_ID.ALL_SAME_DIGITSکد ملی نامعتبر استNationalIderror
NATIONAL_ID.SEQUENTIAL_DIGITSکد ملی نامعتبر استNationalIderror
NATIONAL_ID.MIDDLE_ZEROSکد ملی نامعتبر استNationalIderror
NATIONAL_ID.INVALID_CHECKSUMکد ملی نامعتبر استNationalIderror
NATIONAL_ID.UNKNOWN_CITY_CODEمحل صدور کد ملی شناسایی نشدNationalIdwarning
CARD_NUMBER.EMPTYشماره کارت نمی‌تواند خالی باشدCardNumbererror
CARD_NUMBER.WRONG_LENGTHشماره کارت باید ۱۶ رقم باشدCardNumbererror
CARD_NUMBER.INVALID_CHECKSUMشماره کارت نامعتبر استCardNumbererror
CARD_NUMBER.ALL_SAME_DIGITSشماره کارت نامعتبر استCardNumbererror
CARD_NUMBER.UNKNOWN_BINبانک صادرکننده شناسایی نشدCardNumberwarning
IBAN.EMPTYشماره شبا نمی‌تواند خالی باشدIbanerror
IBAN.MISSING_PREFIXشماره شبا باید با IR شروع شودIbanerror
IBAN.WRONG_LENGTHشماره شبا باید ۲۶ کاراکتر باشد (IR + ۲۴ رقم)Ibanerror
IBAN.INVALID_CHECKSUMشماره شبا نامعتبر استIbanerror
IBAN.UNKNOWN_BANKبانک این شماره شبا شناسایی نشدIbanwarning
PHONE_NUMBER.EMPTYشماره تلفن نمی‌تواند خالی باشدPhoneNumbererror
PHONE_NUMBER.INVALID_FORMATشماره تلفن باید یک شماره موبایل یا تلفن ثابت ایرانی معتبر باشدPhoneNumbererror
PHONE_NUMBER.UNKNOWN_OPERATORاپراتور این شماره شناسایی نشدPhoneNumberwarning
PHONE_NUMBER.UNKNOWN_AREA_CODEپیش‌شماره این تلفن ثابت شناسایی نشدPhoneNumberwarning
LEGAL_ID.EMPTYشناسه حقوقی نمی‌تواند خالی باشدLegalIderror
LEGAL_ID.WRONG_LENGTHشناسه حقوقی باید ۱۱ رقم باشدLegalIderror
LEGAL_ID.MIDDLE_ZEROSشناسه حقوقی نامعتبر استLegalIderror
LEGAL_ID.INVALID_CHECKSUMشناسه حقوقی نامعتبر استLegalIderror
POSTAL_CODE.EMPTYکد پستی نمی‌تواند خالی باشدPostalCodeerror
POSTAL_CODE.WRONG_LENGTHکد پستی باید ۱۰ رقم باشدPostalCodeerror
POSTAL_CODE.INVALID_PATTERNکد پستی نامعتبر استPostalCodeerror
BILL_ID.EMPTYشناسه قبض نمی‌تواند خالی باشدBillIderror
BILL_ID.WRONG_LENGTHشناسه قبض باید بین ۶ تا ۱۳ رقم باشدBillIderror
BILL_ID.INVALID_CHECKSUMشناسه قبض نامعتبر استBillIderror
BILL_ID.PAYMENT_MISMATCHشناسه پرداخت با شناسه قبض مطابقت نداردBillIderror
BILL_ID.PAYMENT_EMPTYشناسه پرداخت نمی‌تواند خالی باشدBillIderror
BILL_ID.PAYMENT_WRONG_LENGTHشناسه پرداخت باید حداقل ۶ رقم باشدBillIderror
PLATE_NUMBER.EMPTYشماره پلاک نمی‌تواند خالی باشدPlateNumbererror
PLATE_NUMBER.INVALID_FORMATقالب شماره پلاک نامعتبر استPlateNumbererror
PLATE_NUMBER.UNKNOWN_LETTERحرف میانی پلاک شناسایی نشدPlateNumberwarning
PLATE_NUMBER.UNKNOWN_CITY_CODEکد شهر پلاک شناسایی نشدPlateNumberwarning

Per-validator pages explain when each code fires: National ID, Card Number, IBAN, Phone Number, Legal ID, Postal Code, Bill ID, Plate Number.

Formatters, money and environment

CodePersian messageEmitted byKind
NUMBER_FORMATTER.INVALID_FORMATمقدار ورودی عددی معتبر نیستNumberFormatter::withSeparators(), Currency::format()thrown: FormatException
NUMBER_TO_WORDS.OUT_OF_RANGEمقدار ورودی برای تبدیل به حروف خارج از محدوده پشتیبانی شده استNumberToWords::convert()thrown: FormatException
NUMBER_TO_WORDS.PRECISION_LOSSدقت عدد اعشاری از محدوده شناور PHP بیشتر است؛ مقدار را به‌صورت رشته ارسال کنیدNumberToWords::convert()thrown: FormatException
ORDINAL_NUMBER.NON_POSITIVEعدد ترتیبی باید بزرگ‌تر از صفر باشدOrdinalNumber::toWord(), toShort()thrown: FormatException
ORDINAL_NUMBER.EMPTY_INPUTورودی نمی‌تواند خالی باشدOrdinalNumber::addSuffix()thrown: FormatException
TIME_AGO.INVALID_TIMESTAMPتاریخ ورودی قابل تبدیل نیستTimeAgothrown: FormatException
AMOUNT.NEGATIVEمبلغ نمی‌تواند منفی باشدAmountthrown: MoneyException
AMOUNT.OVERFLOWمبلغ از حداکثر مقدار قابل نمایش بیشتر استAmountthrown: MoneyException
HTML.SEGMENTATION_FAILEDپردازش متن HTML ناموفق بودDigitConverter::convertContent(), CharNormalizer::normalizeContent()thrown: FormatException
VALIDATION.FAILEDاعتبارسنجی ناموفق بودValidationException::fromResult()thrown: ValidationException
FAKE.INVALID_ARGUMENTآرگومان ورودی برای تولید داده آزمایشی نامعتبر است::fake() generatorsthrown: ValidationException
ENV.MISSING_EXT_INTLاین قابلیت به افزونهٔ ext-intl نیاز داردPersianCollator, CharNormalizer(normalizeToNfc: true)thrown: EnvironmentException

VALIDATION.FAILED is a fallback. ValidationException::fromResult() uses it for a result that has no code, e.g. one built from plain-string errors.

The NUMBER_TO_WORDS.PRECISION_LOSS message is reproduced exactly, but NumberToWords::convert() accepts only int|float; passing a Persian or arbitrary-precision decimal string is not a supported workaround. Use integer input within range or a separate decimal strategy. See formatting.

Search documentation

Search across all projects. Close this window to return to your guide.

Tab to navigate · Enter to openEsc to close