فریم ورک Yii چه ویژگی هایی دارد؟

فریم ورک Yii چه ویژگی هایی دارد؟

فریم ورک Yii چه ویژگی هایی دارد؟

فریم ورک Yii چه ویژگی هایی دارد؟

انتخاب یکی از فریم ورک های موجود برای آغاز برنامه نویسی، یک چالش بزرگ است.

چراکه نمیتونید همه ی فریم ورک ها رو برای تولید پروژه به طور هم زمان یاد داشته باشید، اگر هم چنین قصدی داشته باشید، کار بسیار سختی در پیش رو دارید.

اما خوب

باید از یک جایی شروع کرد! درسته؟

فریم ورک های متعددی برای برنامه نویسی به زبان PHP وجود داره اما طبیعاتا هر کدوم معایب و مزایایی دارند.

محبوب ترین فریم ورک حال حاضر زبان PHP فریم ورک Laravel (بخوانید لاراول) است.

اما همچنان فریم ورک های دیگری وجود دارند که میتوانند در کنار لاراول عرض اندام کنند.

فریم ورک yii یکی از این چهارچوب هاست که امکانات زیادی برای نوشتن برنامه های بزرگ و حتی وب اپلیکیشن های دم دستی به شما میدهد.

ویژگی های فنی فریم ورک Yii

پشتیبانی از برنامه نویسی ماژولار

برای بسیاری از برنامه نویسان با تجربه، نوشتن ریزبرنامه های مستقلی که بتوانند به سرعت به پروژه ی جدید منتقل شوند حیاتی است. برای مثال ماژول مدیریت کاربران، ماژول وبلاگ و مقاله نویسی و ...

سیستم مسیریابی URL

سیستم مسیریابی به شما این امکان را می دهد تا آدرس های url هوشمند و شخصی سازی شده را روی وب اولیکیشن خود تنظیم کنید.

قابلیت تست نویسی یکپارچه (uni test)

نوشتن تست برای تشخیص صحت عملکرد  بخش های حیاتی در برنامه های بزرگ یک امر حیاتیست، که در Yii به خوبی پشتیبانی میشود.

کوئری ساز و ORM برای راحت تر شدن تعامل با بانک داده

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

پشتیبانی از تمپلیت انجین ها(موتور قالب)

موتورهای قالب به شما این امکان را می دهند، که قالب های متعددی برای وب اپلیکیشن خود بنویسید و البته از نوشتن کدهای PHP در فایل های HTML خلاص شوید. این قابلیت در فریم Yii به طور پیشفرض در هسته وجود ندارد، اما تیم یی این امکان را در پکیج های جانبی برای شما فراهم کرده اند تا بتوانید با موتور های تمپلیت محبوب مانند Blade قالب نویسی کنید.

پشتیبانی از پکیج منیجیر Composer

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

استفاده از مدل برنامه نویسی MVC

مدل MVC به خوانایی برنامه و منظم شدن ساختار منطقی برنامه ی شما کمک میکند، بدین ترتیب که کدهای HTML را در فایلی به نام View، کدهای مربوط به تعامل با بانک داده را در فایلی به نام Model و کدهایی که درخواست کاربر را پردازش میکند در فایلی به نام Controller قرار میدهد. این ساختار کدنویسی در اکثر فریم ورک های مدرن پشتیبانی میشود و در فرم ورک یی نیز نهادینه شده است.

سیستم خط فرمان CLI برای انجام فرامین و اجرای ابزارهای فریم ورک از طریق خط فرمان

سیستم صف پردازش که مانند کران جاب عمل میکند

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

ارسال ایمیل آسان

با فراهم نمودن کلاس هایی که با برنامه ی ارسال ایمیل سرور شما یکپارچه شده اند، عملیات ارسال ایمیل را راحت تر میکند.

احراز هویت

امکان تشخیص هویت کاربر ثبت نامی، لاگین، ریست پسورد کاربر و لاگ اوت کردن وی که در فریم ورک Yii نهادینه شده است.

پیکربندی آسان

قابلیت پیکربندی و تغییر آسان تنظیمات اولیه مانند رمزهای اتصال به بانک داده، تغییر وضعیت برنامه به عنوان برنامه نویسی یا پروداکشن و بسیاری از کانفیگ های دیگر را فراهم میکند.

سیستم مدیریت کش

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

سیستم محافظت از جعل درخواست CSRF

هکر ها و سودجوها همیشه به دنبال راهی برای سوء استفاده از سایت های دیگران و یا هک اطلاعات هستند.

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

برای اطلاعات بیشتر در مورد CSRF به این صفحه مراجعه نمایید:

cross-site request forgery

میان افزار ها (Middleware)

میان افزارها بین کاربر و برنامه ای قرارمیگیرند که شما مینویسید.

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

برای مثال یکی از وظایف میان افزار ها، بررسی هویت کاربر و مجوز استفاده از کنترلر فعلی است.

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

میان افزارها کاربردهای متنوعی دارند، برای مثال ثبت آمار بازدید یکی از اموریست که میتوان در میان افزارها پیاده سازی کرد، تا بدون شلوغ کردن کدهای شما، عملیات مربوطه را در سطحی بالاتر اجرا کند.

اعتبارسنج ها (Validator)

اعتبارسنج ها که در مدل ها پیاده سازی میشوند، این امکان را به مدل میدهند تا قبل از ارسال اطلاعات به بانک داده، آنها را بررسی و اعتبارسنجی کند.

برای مثال در جدول کاربران، سن کاربر را از نوع عدد (INT) تعیین میکنید، چنانچه کاربر به هر دلیلی به مدل شما داده ی غیر عددی برای سن کاربر ارسال کند و مدل بدون اعتبارسنجی این درخواست را برای ثبت به بانک داده بفرستد، برنامه با خطا مواجه میشود.

اعتبارسنج ها دقیقا برای بررسی همین موارد در داخل برنامه ی نوشته شده بوجود آمده اند.

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

اعتبار سنج ها میتوانند طول رشته ی داده، نوع داده، یونیک بودن یا نبودن داده، الزامی بودن یا نبودن آن و موارد دیگر را کنترل کنند.

مدیریت آسان سشن ها(Session)

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

مدیریت سشن ها در فریم ورک یی بسیار آسان است.

سیستم چند زبانه (Localization)

Yii این امکان را به توسعه دهندگان میدهد تا بتوانند متون نمایش داده شده در وب اپلیکیشن را به زبان های مختلفی نمایش دهند.

این قابلیت که کانفیگ و استفاده از آن بسیار آسان است، قابلیت نمایش متون دارای متغیرهای پویا را نیز به توسعه دهنده میدهد.

کدژنریتور پیشرفته ی Gii

کدژنریتور یکی از ویژگی های محبوب و قابل توسعه ی فریم ورک Yii است.

کدژنریتور Gii به برنامه نویس امکان ایجاد مدل، کنترلر، و ویوی های اولیه ی جداول پایگاه داده را در کمتر از یک دقیقه میدهد.

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

ماژول Gii دارای ریز ماژول هایی است که هر کدام کاری مستقل انجام میدهند:

  • Controller Generator

  • Model Generator

  • CRUD Generator

  • Module  Generator

  • Extension Generator

مدیریت فایل های استاتیک Assets

فریم ورک Yii دارای کلاس هایی برای مدیریت Asset هاست، بدین صورت که لیست فایل های CSS و JS مورد استفاده در View در یک کلاس Asset را از شما دریافت نموده و بر اساس توالی ای که برای آن تعریف نموده اید، آنها را در ویو لود میکند.

برای مثال، شما یک کلاس Asset حاوی فایل های جی کوئری دارید و آن را بوسیله ی composer بر روی Yii نصب کرده اید.

حالا کلاس Asset دیگری دارید که فایل های جاوااسکریپت آن نیاز به فایل جی کوئری دارند، اما این فایل درون پکیجشان موجود نیست.

در این حالت به جای دانلود کردن و قرار دادن فایل جی کوئری در پکیج Asset دوم، کافیست در کانفیگ یی تعریف کنید که قبل از پیاده سازی Asset های اول در View ابتدا Asset حاوی جی کوئری را لود کند.

 

کار دیگری که Asset ها انجام میدهند امکان ورژن گذاری روی فایل های css و js و یا فشرده سازی و باندل کردن آنهاست.

ماژول RBAC

مدیریت سطح دسترسی کاربرای به بخش های مختلف برنامه امری حیاتی برای خیلی از برنامه هاست.

فریم ورک Yii به صورت پیش فرض از این قابلیت پشتیبانی میکند و به شما این امکان را میدهد تا سطح دسترسی کاربر به تمامی کنترلر ها و اکشن ها را مدیریت کنید.

در این ماژول کافیست ابتدا انواع دسترسی ها را مشخص کنید.

سپس نقش هایی به عنوان مدیر،ناظر،نویسنده و ... ایجاد میکنید و به هر نقش تعدادی از دسترسی ها را اختصاص میدهید.

سپس به هر کاربر یک یا چند نقش را نسبت می دهید.

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

امکان ایجاد وب اپلیکیشن های مجزا در نسخه ی Yii Advanced

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

در فریم ورک های دیگر مانند لاراول و کدایگناتور بخش ادمین وب اپلیکیشن ها معمولا به صورت یک ماژول نوشته میشود.

اما در Yii Advance شما امکان ایجاد یک وب اپ مجزا به نام app-backend‌ را دارید و حتی میتوانید ماژول هایی مخصوص بک اند و ماژول هایی مخصوص برنامه ی فرانت که کاربر عادی با آن در تعامل است بنویسید.

این دو برنامه هر دو به یک بانک داده متصل هستند، اما کاملا مستقل عمل میکنند.

میتوانید مدل ها را بین دو برنامه به اشتراک بگذارید یا اینکه برای هر برنامه مدل های مستقلی بنویسید.

محدودیتی در تعداد برنامه های ایجاد شده در حالت Advance ندارید و این موضوع دست شما را برای تولید برنامه های گسترده تر با خوانایی بیشتر باز میگذارد.

سیستم اعتبارسنجی فرم ها

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

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

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

سناریو ها در مدل ها

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

برای مثال فرض کنید مدلی که برای جدول کاربران میسازید را در بخس ثبت نام کاربر و ویرایش اطلاعات کاربر استفاده‌ کرده اید.

حالا نمیخواهید در بخش ویرایش اطلاعات کاربری، کاربر نام کاربری خود را تعویض کند.

ممکن است بگویید داخل فرم تغییر اطلاعاتی که به کاربر نمایش می دهم، فیلد نام کاربری را میبندم، یا اصلا این فیلد را در فرم ویرایش اطلاعات کاربر قرار نمیدهم.

خوب این راه حل برای کاربران عادی جواب میدهد، اما برای کاربران زرنگ نه!

کافیست با کلیک راست روی صفحت ی فرم در مرورگر و inspects کردن کد، یک فیلد نام کاربری در مرورگر خود به فرم اضافه کنند و پس از تغییر محتوای آن فرم را ارسال کنند.

چون این فیلد داخل مدل کاربران به رسمیت شناخته‌میشود، پس در بانک داده تغییر میکند!!

 

راه حل چیست؟

راه حل اول این است که یک مدل مجزا برای ثبت نام و یک مدل مجزا برای ویرایش اطلاعات ایجاد کنید، که نام کاربری را به رسمیت نشناسد!

راه حل دوم‌ که در فریم ورک Yii ارائه میشود، تعریف سناریو های مختلف برای هر دو حالت در یک مدل است.

یعنی شما از همان مدل در هر دو حا استفاده میکنید.

دو سناریو در مدل تعریف میکنید، سناریوی اول را register نام گذاری میکنید و امکان ثبت اطلاعات در فیلد نام کاربری را به این سناریو میدهید.

سناریوی دیگری به نام update ایجاد میکنید، اما در این سناریو امکان ثبت اطلاعات روی فیلد نام کاربری را میبندید.

حالا برای فرم ویرایش اطلاعات کاربر، سناریوی update را در مدل ست میکنید.

این سناریو از ثبت اطلاعات روی فیلد نام کاربری از طریق فرم جلوگیری میکند، حتی اگر کاربر شما به روش های نامعمول قصد ارسال اطلاعات و تغییر در جدول را داشته باشد.

رفتار ها در مدل (Behaviors)

همانطور که میدانید در هر برنامه ای یک سری اطلاعات حین افزودن رکورد به یانک داده یا ویرایش رکورد موجود باید حتما درج شود.

برای مثال تاریخ ایجاد این رکورد، یا نام کاربری که این رکورد را ایجاد کرده است.

فریم ورک یی برای این مسئله کلاس های Behavior را پیشنهاد می دهد.

این کلاس ها مه در مدل فعال سازی میشوند، حین ذخیره ی اطلاعات در بانک داده، فیلد های مدنظر شما را پر میکنند.

به طور پیش فرض در فریم ورک یی تعدادی از رفتارها مثل ثبت تاریخ فعلی، وبت کاربر فعلی و ... قرار داده شده است، اما شما میتوانید کلاس های رفتار اختصاصی خود را تولید کنید و در همه ی پروژه ها استفاده کنید.

 

 

تا اینجا ویژگی های فنی ارائه شده در فریم ورک Yii را به صورت مختصر توضیح دادیم.

حالا ویژگی های عمومی فریم ورک Yii که رقیب سرسختی برای فریم ورک های دیگر است را عنوان میکنیم:

  • جامعه ی توسعه دهنده ی وسیع

  • مستندات آموزشی کامل در سایت توسعه دهنده

  • تیم پاسخگو در قبال خطاها و مشکلات توسعه دهندگان

  • جامعه ی برنامه نویسان گسترده و کامپوننت ها و ماژول های متنوع

  • یادگیری آسان

کارایی و Performance در فریم ورک Yii

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

نتایج این تست را میتوانید در این لینک مشاهده نمایید:

http://www.phpbenchmarks.com/en

با این حال این فریم ورک YII رفته رفته محبوبیت خود را از دست داده است، اما همچنان در حال توسعه و ارائه ی راهکارهای جدید است.

Yii همچنان جزو پر استفاده ترین فریم ورک هاست، البته که انتخاب فریم ورک مناسب، کاملا به سیاست شما در حوزه ی برنامه نویسی بستگی دارد.

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

انتخاب راه با شماست...