لاراول (Laravel) چیست؟

279
لاراول (Laravel) چیست؟

بسیاری از توسعه‌دهندگانِ وب لاراول (Laravel) را در مجموعه تکنولوژی‌های مورد استفاده خود برای توسعه اپلیکیشن‌های وب قرار می‌دهند. اما لاراول (Laravel) چیست؟ و چرا بسیاری از توسعه‌دهندگان در سراسر جهان از آن استفاده می‌کنند.

لاراول (Laravel) چیست؟

لاراول (Laravel) فریم‌ورک محبوب و متن‌باز زبان برنامه‌نویسی PHP است که توسط Taylor Otwell برای توسعه اپلیکیشن‌های وب، به‌ویژه آن‌هایی که از الگوی معماری MVC یا Model-View-Controller پیروی می‌کردند، ایجاد شد.

این فریم‌ورک استفاده از ویژگی‌هایی که به استقرار و نگهداری از اپلیکیشن‌های وب کمک می‌کنند و دسترسی به پایگاه‌های داده رابطه‌ای را به روش‌های گوناگونی امکان‌پذیر کرده است.  به بیان ساده، فریم‌ورک لاراول به شما کمک می‌کند تا وب‌اپلیکیشن‌هایی شامل مواردی همچون APIها یا وب‌سرویس‌ها ایجاد کنید. لاراول ساخت مؤلفه‌های قابل‌استفاده‌مجدد و انجام تسک‌های روزمره و در نتیجه ایجاد و نگهداری از اپلیکیشن‌های وب را آسان‌تر می‌کند.

اکنون که می‌دانیم لاراول (Laravel) چیست؟ بیایید کمی در مورد تاریخچه آن صحبت کنیم.

تاریخچه و نسخه‌های گوناگون لاراول

لاراول (Laravel) چیست؟

همان‌طور که پیش‌تر هم گفته شد، لاراول توسط Taylor Otwell ایجاد شد و در ژوئن 2011 در دسترس عموم قرار گرفت. در ابتدا، اوتول قصد داشت جایگزین مناسبی برای فریم‌ورک Codeigniter بسازد که از ویژگی‌ها و امکانات پیشرفته‌تری از جمله تخصیص مجوز (authorization) و احراز هویت (authentication) کاربران برخوردار باشد.

ممکن است علاقه‌مند باشید: تاریخچه پیدایش لاراول

نسخه بتا و Laravel 1.0 هر دو در یک ماه منتشر شدند. هر دو نسخه به‌صورت پیش‌فرض از احراز هویت کاربران، مدل‌ها، session‌ها، viewها و محلی‌سازی (localization) و… پشتیبانی می‌کردند. تنها مشکل نسخه اولیه عدم پشتیبانی از کنترلر بود؛ به این معنی که لاراول هنوز یک فریم‌ورک MVC واقعی به حساب نمی‌آمد.

نسخه دوم این فریم‌ورک (Laravel 2.0) در سپتامبر همان سال منتشر شد. این نسخه‌ی بهبود‌یافته از ویژگی‌های متنوع و تازه‌ای از جمله پشتیبانی از کنترلر برخوردار بود که لاراول را به یک فریم‌ورک کاملاً مطابق با MVC تبدیل می‌کرد. از دیگر ویژگی‌های این نسخه می‌توان به پشتیبانی پیش‌فرض از اصل وارونگی کنترل (Inversion of Control یا IoC) و یک سیستم قالب (templating system) به نام Blade اشاره کرد. به اعتقاد اغلب توسعه‌دهندگان، حذف پکیج‌های شخص ثالث از بزرگ‌ترین نقاط ضعف Laravel 2.0 بوده است.

Laravel 3.0 در فوریه سال 2012 منتشر شد و ویژگی‌های تازه‌ای نظیر Artisan و همچنین سیستم packaging به نام Bundles را به کاربران معرفی کرد. این نسخه با ویژگی‌هایی همچون پشتیبانی از انتقال پایگاه داده (database migration) به‌منظور کنترل نسخه ساختار پایگاه داده و پشتیبانی از مدیریت رویداد عرضه شد. به‌علاوه از تعداد بیش‌تری از سیستم‌های مدیریت پایگاه داده پشتیبانی می‌کرد.

در ماه می سال 2013، یعنی درست یک‌ سال پس از ارائه Laravel 3.0، نسخه چهارم این فریم‌ورک (Illuminate a.k.a. Laravel 4.0) با تصویری کاملاً جدید در قالب یک فریم‌ورک کاملاً بازنویسی‌شده در اختیار عموم قرار گرفت. این به معنای آن بود که لاراول ساختار خود را به مجموعه‌ای از پکیج‌های مجزا که در Composer – یک سیستم مدیریت پکیج در سطح اپلیکیشن – توزیع شده بودند، انتقال داده بود. با این انتقال توسعه‌پذیری آخرین نسخه لاراول بهبود پیدا کرد. به علاوه، این نسخه از تولید داده به‌صورت انبوه در پایگاه داده (database seeding)، صف‌های پیام (message queues)، انواع مختلف ایمیل و حذف تأخیری یا حذف نرم (Soft Deletion) تاریخچه پایگاه داده پشتیبانی می‌کرد.

در فوریه سال 2015، Laravel 5.0 با چند تغییر داخلی منتشر شد. در ابتدا قرار بود این نسخه با نام Laravel 4.3 منتشر شود؛ با این حال، تغییرات انجام شده به ارائه نسخه جدید تحت عنوان Laravel 5.0 منجر شد.

از ویژگی‌های نسخه پنجم لاراول می‌توان به معرفی Scheduler اشاره کرد که زمان‌بندی و مدیریت تسک‌های دوره‌ای را امکان‌پذیر می‌کند. در این نسخه File System نیز معرفی شد که ذخیره‌سازی، بازیابی و سازماندهی فایل‌ها و داده‌ها را به‌صورت ریموت و به همان شیوه سیستم‌های محلی امکان‌پذیر می‌کند. از دیگر ویژگی‌های معرفی شده در این نسخه می‌توان به Elixir اشاره کرد که کنترل و مدیریت دارایی‌های پکیج را بسیار ساده‌تر کرد. همچنین، پکیج اختیاری Socialite از جمله ویژگی‌هایی بود که فرایند احراز هویت با کنترل خارجی را آسان‌تر کرد.

Laravel 5.1 در ژوئن 2015 معرفی شد. این نسخه را می‌توان نخستین نسخه منتشر شده از لاراول دانست که از پشتیبانی طولانی‌مدت برخوردار بود. 

Laravel 5.3 در آگوست سال 2016 منتشر شد. انتشار این نسخه سرعت توسعه‌دهندگان را به شکل قابل‌توجهی افزایش داد و انجام تسک‌های رایج بهبود یافت.

Laravel 5.4 در ژانویه 2017 و با ویژگی‌هایی متعددی نظیر Laravel Dusk، Laravel Mix یا بهبود Routeها و بسیاری ویژگی‌های کاربردی دیگر معرفی شد. پس از آن، در سال 2018 میلادی دو نسخه متوالی دیگر نیز منتشر شدند و سرانجام نسخه نهایی سری 5 در فوریه 2019 عرضه شد.

Laravel 6.0 در سوم سپتامبر 2019 منتشر شد. این نسخه با معرفی نسخه‌بندی معنایی (semantic versioning)، بهبود پاسخ‌های authorization، بهبود subqueryها، سازگاری با سیستم Laravel Vapor، میان‌افزار کاری (job middleware) بهبودیافته و مجموعه‌های تنبل (lazy collections) همراه بود. همچنین scaffolding فرانت‌اند در این نسخه حذف و به پکیج laravel/ui که بخشی از پکیج اصلی است منتقل شد.

Laravel 7.0 در 3 مارس 2020 با ویژگی‌های جدیدی مانند Laravel Sanctum ،Custom Eloquent Casts و بهبود Route Model Binding و… عرضه شد.

Laravel 8.0 در 8 سپتامبر 2020 با ویژگی‌های جدیدی مانند Jetstream، کلاس‌های model factory و Tailwind CSS برای نمایش صفحه‌بندی و سایر بهبودهای کاربری منتشر شد.

آخرین نسخه لاراول، Laravel 9 است که در 8 فوریه 2022 منتشر شد. این نسخه از ویژگی‌های جدید PHP 8 استفاده می‌کند.

با ما همراه باشید تا در ادامه‌ی پاسخ به سؤال لاراول (Laravel) چیست؟ در مورد ویژگی‌های اصلی لاراول بیشتر توضیح دهیم.

ویژگی‌های اصلی لاراول

لاراول (Laravel) چیست؟

لاراول برای گسترش مرزها و توانایی‌های فریم‌ورک‌های قدیمی‌تر و با هدف ساده‌سازی تسک‌های روزمره ایجاد شد. بنابراین لاراول همواره بر ویژگی‌هایی تمرکز داشته است که توسعه را آسان‌تر و اپلیکیشن‌ها را قابل‌اعتمادتر و پیچیده‌تر و در عین حال routing را ساده‌تر می‌کنند. از اصلی‌ترین ویژگی‌های لاراول می‌توان به موارد زیر اشاره کرد:

ماژولار بودن (Modularity)

با وجود این ویژگی، ترکیب، جداسازی و ادغام مجدد اجزا یک اپلیکیشن امکان‌پذیر خواهد بود. از آنجایی که لاراول نیز متشکل از مجموعه بزرگی از اجزا مختلف است، به‌صورت ماژولار طراحی شده است تا از طریق تفکیک اجزا به ماژول‌های مختلفی که با یکدیگر کار می‌کنند به بهبود عملکرد اپلیکیشن‌های وب کمک کند. ماژولار بودن به شما این امکان را می‌دهد که اپلیکیشن‌های مقیاس‌بزرگ را به‌آسانی و با عیب‌یابی و مدیریت خطای بهتری ایجاد کنید. در اصل لاراول برای پیروی از دستورالعمل‌های کاربردی روش‌های ساده‌ای را در اختیار توسعه‌دهندگان قرار می‌دهد تا به کمک آن‌ها به‌مراتب آسان‌تر از گذشته بتوانند پروژه‌های مورد‌نظر خود را آغاز و اجرا کنند.

مدیریت وابستگی (Dependency Management)

برخی از توسعه‌دهندگان این ویژگی را مهم‌ترین ویژگی لاراول معرفی می‌کنند. مدیریت وابستگی به معنای استفاده آسان از پکیج‌های مختلف با سازگاری و عملکرد کامل است. برای مثال اتصال دستی یک پکیج شخص ثالث به یک اپلیکیشن مبتنی بر لاراول غیر‌ضروری است، زیرا با استفاده از service provider در لاراول می‌توان این کار را انجام داد. مشکلات مرتبط با وابستگی لاراول توسط Composer که یک ابزار مدیریت وابستگی در PHP است، برطرف شده‌ است. در واقع Composer استفاده از پکیج‌های مختلف را به شیوه‌ای کارآمدتر و در بازه زمانی کوتاه‌تری امکان‌پذیر می‌کند.

احراز هویت (Authentication)

لاراول (Laravel) چیست؟

این ویژگی به بخش جدایی‌ناپذیری از کلیه اپلیکیشن‌های وب تبدیل شده است. در گذشته، احراز هویت به‌ویژه در فریم‌ورک‌هایی نظیر CodeIgniter فرایندی طولانی و زمان‌بر بود. لاراول این ویژگی را به‌صورت مبتکرانه و متفاوتی ارائه کرده است. کافی است توسعه‌دهنده یک فرمان ساده را اجرا کرده و یک سیستم احراز هویت کاربردی و ساده را ایجاد کند. به علاوه، وجود برخی از گزینه‌ها ایجاد فرایند احراز هویت اختصاصی را برای توسعه‌دهندگان امکان‌پذیر می‌کند.

 Caching

ذخیره‌سازی آسان و سریع داده‌های قابل‌بازیابی از اصلی‌ترین مواردی است که همواره در توسعه اپلیکیشن‌ها مورد‌توجه بوده است. لاراول هم از این قاعده مستثنا نبوده و این ویژگی مفید و کاربردی را ارائه داده است. این قابلیت، با کاهش زمان پردازش اطلاعات به اپلیکیشن‌ها کمک می‌کند تا عملکرد بهتری داشته باشند.

عیب‌یابی و تست

لاراول (Laravel) چیست؟

لاراول از یک PHPUnit داخلی برخوردار است که اپلیکیشن‌ها را ارزیابی و تست می‌کند. از آن‌جا که لاراول با هدف دارا بودن قابلیت تست طراحی شده است، ویژگی‌های عیب‌یابی و تست در این فریم‌ورک با یکدیگر یکپارچه شده‌اند. 

محلی‌سازی (Localization)

با توجه به توانایی این فریم‌ورک در ایجاد اپلیکیشن‌های چند‌زبانه هم‌زمان با توسعه خودِ اپلیکیشن، استفاده از لاراول را می‌توان از ساده‌ترین گزینه‌ها برای ارائه اپلیکیشن‌ها و پروژه‌های چند‌زبانه و چند‌ملیتی به شمار آورد.

مسیریابی (Routing)

از این ویژگی لاراول می‌توان برای گروه‌بندی و نام‌گذاری مسیرها، اتصال داده‌های مدل به مسیرها و اعمال فیلتر برای آن‌ها استفاده کرد. 

موتور قالب (Template Engine) یا Blade

این موتور به شکل قابل‌توجهی به قالب‌بندی داده‌ها کمک می‌کند. به علاوه از یک الگوی وراثتی برخوردار است که ایجاد layoutهای پیچیده و در عین حال قابل‌پیمایش را برای توسعه‌دهندگان امکان‌پذیر می‌کند. از سوی دیگر، Blade استفاده از کدهای ساده PHP را در viewها محدود نمی‌کند. بنابراین تمام viewهای Blade به کد PHP ساده تبدیل شده و تا زمان اصلاح می‌توانند در حافظه‌ی کش ذخیره شوند؛ به این معنی که این موتور هیچ overhead‌ای به اپلیکیشن‌ها اضافه نمی‌کند.

کوئری‌ساز پایگاه داده (Database Query Builder)

لاراول با ارائه گزینه‌ها و فیلترهای متنوع، مدیریت داده‌ها و پیاده‌سازی کوئری‌های پیچیده را ساده‌تر کرده و راهکار مناسبی را برای کوئری‌سازی پایگاه داده در اختیار توسعه‌دهندگان قرار می‌دهد. 

Eloquent ORM

این ویژگی لاراول از اغلب موتورهای پایگاه داده پشتیبانی کرده و با SQLite و MySQL و همچنین مستندات قابل‌اعتماد برای همه توابع Eloquent به‌خوبی کار می‌کند. 

امنیت

لاراول (Laravel) چیست؟

توانایی لاراول در ایجاد اپلیکیشن‌های ایمن از مهم‌ترین قابلیت‌هایی است که نظر اغلب توسعه‌دهندگان را به خود جلب کرده است. Eloquent ORM از اتصال PDO که به‌عنوان محافظی در برابر SQL injection عمل می‌کند، استفاده می‌کند. به علاوه، فریم‌ورک لاراول برای محافظت از کد در برابر حملات XSS، یک سیستم پشتیبانی بومی را ارائه می‌‌کند. لاراول همچنین با ارائه پکیج‌های امنیتی مختلف به ارتقا هرچه بیش‌تر امنیت اپلیکیشن‌های وب کمک می‌کند. پکیج‌هایی نظیر Laravel Security Component و Laravel-ACL همگی با هدف بهبود امنیت اپلیکیشن‌ها ارائه شده‌اند.

 Envoy

با استفاده از این ویژگی، تسک‌های رایج را می‌توان از طریق سرورهای ریموت و از داخل خود اپلیکیشن اجرا کرد. این امر توسعه‌دهندگان را قادر می‌سازد تا تسک‌های آتی را برای استقرار تنظیم کنند.

Migration System

فریم‌ورک لاراول دارای یک migration system قابل‌اعتماد است که ایجاد ساختارهای پایگاه داده را امکان‌پذیر می‌کند. به‌جای تکیه بر SQL، این ساختارها را می‌توان با استفاده از زبان PHP به‌سادگی ایجاد کرد. به این ترتیب، کاربران با بهره‌گیری از این قابلیت می‌توانند کلیه جداول، پایگاه‌های داده و شاخص‌های مورد‌نظر خود را ایجاد کنند.

File System

لاراول با پشتیبانی از File Systemهای مختلف، استفاده از فایل سیستم‌های محلی یا ذخیره‌سازی مبتنی بر Cloud را همراه با قابلیت انتخاب آسان از بین آن‌ها امکان‌پذیر می‌کند.

ممکن است علاقه مند باشید: بهترین پروژه‌های متن‌باز Laravel

پکیج‌های First-Party آماده لاراول

پکیج‌های لاراول

SHH یا Secure Shell نخستین پکیجی بود که در Laravel 4.1 معرفی شد. این پکیج اجرای دستورات CLI را در سطح برنامه‌نویسی و بر روی سرورهای ریموت امکان‌پذیر می‌کند. در واقع، SHH به‌عنوان یک پروتکل شبکه رمزگذاری‌شده عمل می‌کند.

Cashier دومین پکیجی بود که با Laravel 4.2 ارائه شد. این پکیج رابطی است که برای مدیریت ویژگی‌هایی نظیر کنترل کوپن‌ها، ایجاد فاکتورها و سایر خدمات مرتبط با صورت‌حساب‌هایی که توسط Stripe ارائه می‌شوند، کاربرد دارد.

Scheduler در نسخه پنجم لاراول معرفی شد. این پکیج به Artisan افزوده شده و زمان‌بندی و اجرای تسک‌های دوره‌ای را با تکیه بر cron daemon و Artisan امکان‌پذیر می‌کند.

File System هم‌زمان با پکیج Scheduler معرفی شد. این پکیج یک لایه انتزاعی (abstraction layer) است که استفاده از چند فایل سیستم مختلف نظیر ذخیره‌سازی محلی و مبتنی بر Cloud را به شیوه‌ای یکسان و شفاف برای توسعه‌دهندگان امکان‌پذیر می‌کند.

Socialite یک پکیج اختیاری است که همراه با Laravel 5.0 معرفی شد و قابلیت‌های احراز هویت این فریم‌ورک را با به وجود آوردن امکان احراز هویت از طریق ارائه‌دهندگان OAuth مختلفی نظیر GitHub ،Bitbucket ،Twitter ،Google و Facebook گسترش داد.

Artisan

Artisan، رابط خط فرمانِ (command-line interface) لاراول، برای نخستین بار در Laravel 3.0 معرفی شد. با این حال، در آن زمان این رابط از قابلیت‌های محدودی برخوردار بود. بعدها، پس از انتقال پلتفرم لاراول به معماری مبتنی بر Composer و همچنین به لطف ادغام اجزاء مختلف فریم‌ورک Symfony، در نسخه چهارمِ لاراول ویژگی‌های دیگری نیز به Artisan افزوده شد.

ویژگی‌های Artisan در زیر‌فرمان‌های مختلفی نگاشته می‌شوند. بنابراین در هنگام ایجاد و مدیریت اپلیکیشن‌ها، سطح بالایی از عملکرد را ارائه می‌دهند. رابط خط فرمان معمولاً برای مدیریت database migration و database seeding به‌کار می‌رود. از دیگر ویژگی‌های محبوب این فریم‌ورک می‌توان به گسترش قابلیت‌ها از طریق ایجاد و پیاده‌سازی دستورات سفارشی نظیر خودکارسازی تسک‌های دوره‌ای اشاره کرد.

Composer

Composer

نسخه چهارم لاراول برای عملکرد صحیح به پکیج‌های خارجی متنوعی وابسته بود. به همین دلیل Composer معرفی شد تا این وابستگی را مدیریت کند. این ابزارِ مدیریت وابستگی مبتنی بر PHP، راه‌اندازی پروژه‌های جدید را بسیار آسان‌تر کرده است؛ چرا که به کمک آن دیگر به خاطر سپردن URLها یا دانلود فایل‌های فشرده ضرورتی نخواهد داشت. با استفاده از این ویژگی و تنها با اجرای چند دستور ساده، راه‌اندازی پروژه‌های مختلف برای توسعه‌دهندگان امکان‌پذیر خواهد بود.

دلایل محبوبیت لاراول (Laravel) چیست؟

محبوبیت لاراول بیش از هر چیز مربوط به قابلیت شخصی‌سازی آسان آن است. این ویژگی، ایجاد ساختارهای منحصر‌به‌فرد و ارائه اپلیکیشن‌های بی‌نظیر را برای توسعه‌دهندگان امکان‌پذیر می‌کند. لاراول همچنین یک سینتکس عالی را در اختیار توسعه‌دهندگان قرار می‌دهد که با استفاده از آن نوشتن کدها به مراتب ساده‌تر و واضح‌تر خواهد بود. از دیگر عوامل مؤثر در محبوبیت لاراول می‌توان به اکوسیستم عظیم آن و ویژگی‌های مفیدی مانند مسیریابی، ORM، استقرار فوری، کوئری DB و قالب‌بندی اشاره کرد. لاراول از قابلیت‌های برجسته دیگری نیز برخوردار است که آن را از انبوه فریمورک‌های موجود متمایز می‌کنند.

در مجموع، این فریم‌ورک ایجاد اپلیکیشن‌های وب را سریع‌تر و آسان‌تر و در عین حال با آسیب‌پذیری فنی کم‌تر، امنیت بالاتر و مدیریت بهتر خطاها امکان‌پذیر کرده است. مجموع عوامل یاد‌شده و همچنین سادگی و برخورداری از ابزارهای فراوان از مهم‌ترین عواملی است که به صرفه‌جویی در وقت منجر شده و ایجاد اپلیکیشن‌های پیشرفته و عیب‌یابی آن‌ها را در کم‌ترین زمان ممکن کرده است.

اجازه دهید تا در ادامه‌ی پاسخ به سؤال لاراول (Laravel) چیست؟ کمی در مورد مزایا و معایب آن نیز صحبت کنیم.

مزایا و معایب فریم‌ورک لاراول (Laravel) چیست؟

تاکنون بازخوردهای ارائه‌شده درمورد لاراول مثبت بوده و اغلب توسعه‌دهندگان از عملکرد این فریم‌ورک، رابط کاربری ساده و ویژگی‌های تست آن رضایت داشته‌اند. به‌علاوه، وجود پکیج‌های فراوان از جمله ویژگی‌های مثبتی است که کار با لاراول را سریع‌تر و آسان‌تر می‌کند. پکیج‌های پیش‌فرض احراز هویت، Scheduler ،Cashier و Socialite و دسترسی به منابع فراوان و پکیج‌های متعدد نیز مورد‌توجه توسعه‌دهندگان قرار گرفته است. علاوه بر همه این‌ها، به لطف ویژگی‌های سازگاری و ادغام در Composer، رفع وابستگی‌ها فرایندی آسان و قابل‌اعتماد خواهد بود. لاراول همچنین امکان توسعه استاندارد را فراهم می‌کند.

با این وجود، یکی از معایب لاراول از نظر توسعه‌دهندگان کم‌تجربه‌تر این است که برای کار با لاراول به‌صورت کارآمد به درک خوبی از برنامه‌نویسی و آشنایی با پکیج‌های مختلف نیاز است. بنابراین، لاراول احتمالاً برای افرادی که تنها با پلتفرم‌های CMS نظیر وردپرس کار کرده‌اند چندان مناسب نخواهد بود. به علاوه، دسترسی به میزبانی اشتراکی از طریق لاراول دشوار است؛ زیرا ساختار این فریم‌ورک اساساً برای میزبانی اشتراکی طراحی نشده است.

جمع‌بندی

لاراول (Laravel) چیست؟ چنان‌که پیش‌تر هم گفته شد لاراول یکی از محبو‌ب‌ترین فریم‌ورک‌های PHP در سراسر جهان است که در پروژه‌های کوچک و بزرگ کاربرد دارد. عملکرد قابل‌اعتماد، ویژگی‌های عالی و مقیاس‌پذیری لاراول از اصلی‌ترین عواملی است که توجه توسعه‌دهندگان حرفه‌ای در کلیه نقاط جهان را به این نرم‌افزار جلب کرده است.

این فریم‌ورک از ساختار شناخته‌شده‌ی MVC پیروی کرده و ساخت اپلیکیشن‌های وب و نگهداری و بهینه‌سازی آن‌ها را ساده‌تر می‌کند. از دیگر مزایای این فریم‌ورک می‌توان به برخورداری از ویژگی‌های پیش‌فرض بسیار خوبی نظیر احراز هویت (Authentication)، Session‌ها، مسیریابی (routing) و… اشاره کرد. کلیه ویژگی‌های یاد‌شده و بسیاری موارد دیگر، لاراول را به فریم‌ورکی کاربردی و مناسب برای توسعه‌دهندگان تبدیل کرده است.

کوئرا بلاگ

ممکن است علاقه‌مند باشید
مسابقه‌ی «Quera Connect 6 : PHP/Laravel»
اشتراک در
اطلاع از
guest
0 دیدگاه‌
بازخورد (Feedback) های اینلاین
View all comments