🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ AmirAliDev
سوال درمورد validation
جامعه پی اچ پی ایجاد شده در ۰۷ مرداد ۱۴۰۲

سلام خسته نباشید من یک کلاس validation دارم تو پوشه helper‌ها و اینه من برای این که ایمیل رو بتونم validate کنم که تکراری نباشه به کانکشن دیتابیش نیاز دارم

که sql رو run کنم آیا میتونم از کلاس users که از basemodel ارث بری میکنه کلاس ولیدیشنم هم ارث بری کنه؟

سلام امیر عزیز

نیاز به ارث بری نیست و وابستگی ای ندارن.

شما باید یک پراپرتی ایجاد کنی و کلاس ولیدیت رو درونش قرار بدی یا داخل همون متد از کلاس ولیدیت استفاده کنی.

احمدرضا فاطمی کیا ۰۷ مرداد ۱۴۰۲، ۱۱:۱۰

استاد متوجه منظورتون نشدم الان من تو متد emailexists در کلاس validation چجوری query sql ران کنم؟

AmirAliDev ۰۷ مرداد ۱۴۰۲، ۱۱:۱۲

سلام،

منظور اینکه بصورت composition کلاس validation رو داشته باشید:

class Users extends BaseModel
{
    protected $validation;
    public function __construct(Validation $validation)
    {
        $this->validation = $validation;
    }
    public function validateEmail($email)
    {
        return $this->validation->validateEmail($email);
    }
}

در این روش Dependency Injection هم استفاده شده است.

$users = new Users(new Validation());
$isEmailValid = $users->validateEmail('info@7learn.com');

روش‌های مختلفی برای پیاده سازی خواهید داشت، پیاده سازی کلاس Validation رو میتونید مثل فریمورک‌ها فیلدها و رول‌ها رو مشخص کنید و کلاس‌ها را به قطعه‌های مختلف تقسیم کنید تا تست پذیری و توسعه پذیری بالاتری داشته باشند و همچنین اصول principle معروف به "Software Development Principles" رعایت شده باشد. این اصول شامل DRY (Don't Repeat Yourself) و Keep It Simple, Stupid (KISS) و SOLID و YAGNI (You Ain't Gonna Need It) و Separation of Concerns و ... هستند.

class Validation
{
    public static function validateData(array $data, array $rules)
    {
        $validator = Validator::make($data, $rules);
        if ($validator->fails()) {
            throw new \\Exception($validator->errors()->first());
        }
        return true;
    }
}


بهترین پاسخ
محسن موحد ۱۲ مرداد ۱۴۰۲، ۲۰:۱۱

استاد موحد واقعا ممنونم♥️?کمکم کرد

AmirAliDev ۱۳ مرداد ۱۴۰۲، ۱۸:۰۱