PDA

View Full Version : مزیت های فریمورک Yii 2



under22
سه شنبه 09 تیر 1394, 19:31 عصر
تو این تاپیک میخام مزیت های فریمورک Yii رو نسبت به فریمورک های دیگه بررسی کنیم و اسمی از فریمورک های دیگه نمیبریم . امکانات گفته شده اکثرا از Yii 2 ورژن 2 این فریمورک هست . البته هدف از ایجاد فریمورک Yii طبق گفته خود سایت اون رو بررسی میکنیم .




Yii is a generic Web programming framework, meaning that it can be used for developing all kinds of Web applications using PHP. Because of its component-based architecture and sophisticated caching support, it is especially suitable for developing large-scale applications such as portals, forums, content management systems (CMS), e-commerce projects, RESTful Web services, and so on.




خب اینجا یه توضیحاتی در مورده فریمورک داده شده که به ویژگی های اون اشاره میکنه مثل component و cache و مهندسی بودن اون و قابل استفاده بودن برای پروژه های خیلی بزرگ و قابل استفاده بودن برای ساخت فروم و پرتال و CMS ها و فروشگاه ها و وب سرویس (RESTful ) هست .




If you're already familiar with another framework, you may appreciate knowing how Yii compares:


Like most PHP frameworks, Yii implements the MVC (Model-View-Controller) architectural pattern and promotes code organization based on that pattern.
Yii takes the philosophy that code should be written in a simple yet elegant way. Yii will never try to over-design things mainly for the purpose of strictly following some design pattern.
Yii is a full-stack framework providing many proven and ready-to-use features: query builders and ActiveRecord for both relational and NoSQL databases; RESTful API development support; multi-tier caching support; and more.
Yii is extremely extensible. You can customize or replace nearly every piece of the core's code. You can also take advantage of Yii's solid extension architecture to use or develop redistributable extensions.
High performance is always a primary goal of Yii.

Yii is not a one-man show, it is backed up by a strong core developer team (http://www.yiiframework.com/about/), as well as a large community of professionals constantly contributing to Yii's development. The Yii developer team keeps a close eye on the latest Web development trends and on the best practices and features found in other frameworks and projects. The most relevant best practices and features found elsewhere are regularly incorporated into the core framework and exposed via simple and elegant interfaces.







اینجا هم به صورت کلی مزیت های این فریمورک نسبت به بقیه گفته شده که چند موردش رو میگم اول اینکه هدف از طراحی این فریمورک Performance بالا هست و استفاده از MVC و full-stack بودن فریمورک که به این معنی هست که علاوه بر قسمت سمت سرور این فریمورک سمت کلاینت هم براتون کاربرد داره که این یه مزیت حسابش میشه که اکثر فریمورک های این قابلیت رو ندارند در ادامه توضیح میدم . و داشتن تیم که تعدادشون نزدیک 100 نفر میشه به نام yiisoft که پشتیبانی خیلی قوی از این فریمورک میکنن .

1) اولین مزیت Yii بالا بودن Performance اون هست . بر خلاف نظر سنجی ها بنچ مارک های مختلفی هست که بالا بودن Performance اون رو نشون میده در بالا هم گفته شد هدف اصلی فریمورک بالا بودن Perfromance هست . Yii با توجه به اینکه به صورت توکار و داخلی شامل کلاس ها امکانات خیلی زیادی نظیر widget و componet و extention و... که توسط خود تیم توسعه دادن میشن برخلاف فریمورک های دیگه که این امکانات به صورت پکیچ های جداگانه که توسط یک یا دو نفر توسعه داده میشن این نشون میده با این همه امکانات بالا تونسته Performance خیلی بالایی از خودش به جا بزاره .
ابتدا به سایت خود Yii اشاره میکنیم تصویر زیر را ببینید

لینک (http://www.yiiframework.com/performance/)

132776

خب این benchmark برای نسخه 1 هست در حالی که نسخه 2 خیلی سریعتر و بهینه تر شده با استفاده از قابلیت های PHP 5.4 . لطفا به بنچ مارک های پایین توجه کنید . تصویر زیر نسخه 2 رو مورد استفاده قرار داده .

لینک (https://github.com/kenjis/php-framework-benchmark)

132777

همانطور که میبینید رتبه های 1 و 2 و 3 و 4 فریمورک Micro هستند در حالی که Yii 2 یک فریمورک کامل هست و بسیار Performance عالی از خودش به جا گذاشته . میریم سراغ Benchmark بعدی لطفا به تصویر زیر توجه کنید

لینک (http://phpixie.com/blog/php-framework-benchmark/)

132778

دیگه در مورد Performance حرفی نمیزنم فقط یه لینک میدم که یه Benchmark دیگه هست اگه دوست داشتید میتونید مطالعه کنید . لینک (http://blog.a-way-out.net/blog/2015/03/27/php-framework-benchmark/)


این پست بروز میشه و طی چند روز آینده امکانات زیادی از این فریمورک گفته میشه و ....
امیدوارم تاپیک مفیدی برای دوستانی که میخان این فریمورک رو انتخاب کنند باشه

under22
شنبه 13 تیر 1394, 14:06 عصر
2) ابزار قدرمتند Gii . یکی از ابزار های قدرمتند Yii ابزار Gii هست . این ابزار قابلیت ایجاد model و controller و crud و form و module و extention را دارد که به اختصار توضیح خواهم داد . این ابزار کمک خیلی زیادی به برنامه نویس تو تولید پروژه میکند .
ایجاد model = با استفاده از Gii به راحتی می توان model مورد نظر جدول را ایجاد کرد . به بخش ایجاد Model که برویم نام جدول به صورت autocomplete آورده می شود وقتی نام جدول را تایپ میکنیم و دکمه ایجاد model را میزنیم یه پیش نمایش از Model و کد ها به ما نشان میدهد که وقتی نگاه کنیم این موارد را برای ما ایجاد کرده است : 1.توضیحات فیلد ها و ریلیشن ها 2.ایحاد رول های برای ولیدیشن از روی جدول (برای مثال اگر سه فیلد داشه باشیم که یکی varchar50 و دو فیلد دیگری یونیک باشن کد ولیدیشن آن را برای ما مینویسد که فیلد string با طول 50 و دو فیلد دیگری unique باشند) 3.ایجاد attribute label وقتی ایجاد می شود داخل هر جا از این label استفاده میشود فقط با تغییر داخل مدل اسم label همه جا تغییر میکند 4.ایجاد ریلیشن ها (تمام ریلیشن های موجود اون جدول را برای ما می نویسد)
در انتهای دکمه ایجاد model چندین چکس باکس وجود دارد که به اختصار توشیح میدم .
Use Table Prefix = موقع ایجاد مدل از علامت % برای نام جدول استفاده میکنه که بعدا اگر تو config هر perfix کلی گذاشتیم هیچ مشکلی پیش نمیاد و خودش perfix رو به ابتدا جدول اضافه میکنه .
Generate Relations = موقع ایجاد مدل ریلشن های اون هم نوشته میشه .
Generate Labels from DB Comments = موقع ایجاد مدل یکسری کامنت و توضیحات برای درک بهتر نوشته میشه .
Generate ActiveQuery = موقع ایجاد مدل اصلی یک مدل دیگر ایجاد میشه که مدل اضلی برای استفاده از ActiveRecord هست و این مدل برای استفاده از ActiveQuery هست .
Enable I18N = موقع ایجاد مدل در قسمت label ها از قابلیت چند زبانه بودن Yii پشتیبانی میکنه و مقدار label ها رو از تابع t که تو Yii 1 هم بود میخونه .
ایجاد comtroller = با استفاده از Gii به راحتی میتوان controller مورد نظر را ایجاد کرد . با ایجاد comtroller پوشه view آن به همراه یک view ساخته می شود . controller مورد نظر حاوی یکسری کد آماده برای راحتی کار می باشد .
ایجاد Crud = یکی از بهترین امکانات Gii ایجاد Crud هست اسم Crud مخفف عملیات update و view و delete و insert می باشد . ابتدا اسم مدل را انتخاب میکنیم و بعد اسم کنترلر مورد نظر را انتخاب میکنیم در نهایت اسم مدل سرچ را انتخاب میکنیم در آخر توضیح میدم مدل سرچ چی هست . با انتخاب موارد بالا ابتدا Gii کنترلر مورد نظر را ایجاد می کنید این کنترلر شامل action های insert و update و delete و view می باشد که این عملیات رو به صورت کامل برای ما انجام می دهد . از فایل های ایجاد شده کنترلر را گفتیم میریم سراغ model خب Model رو طبق توضیحات بالا برامون ایجاد میکنه اما مدل سرچ چیست ؟!! تو نسخه Yii 2 وقتی Grid ساخته میشه برای مدیریت بهتر و کنترلر اختصاصی تر Grid میاد از مدل سرچ استفاده میکنه و دیگه کاری به مدل اصلی نداره و مدل سرچ خودش از Model اصلی ارث بری میکنه با جدا شدن مدل سرچ از مدل اصلی شما میتونید گرید مورد نظر رو کامل custom کنید . مدل سرچ شامل موارد زیر می باشد 1.توضیحات فیلد ها 2.سناریو 3.تابع سرچ که تو این تابع میتونید رو سرچ گرید دسترسی کامل داشته باشید برای مثال کدام فیلد سرچ به صورت like باشد کدام نباشد کدام فیلد sort داشته باشد و.....
از مدل و کنترلر و مدل سرچ که بگذریم میریم سراغ view های ایجاد شده که شامل فایل های زیر می باشد . create که برای insert می باشد . update که برای update می باشد . view که از DetailView برای view استفاده شده است . index که از Grid برای نمایش و سرچ و ... که اغلب برای مدیریت هست استفاده شده است . _form که فرم برای insert و update می باشد . _search هم برای سرچ هست که به صورت پیشفرض غیر فعال هست چون گرید امکان کامل سرچ رو براتون فراهم کرده .
با استفاده از Crud شما میتوانید تمام امکانات روی اون جدول رو در عضر چند ثانیه ایجاد کنید و به راحتی هم میتونید فیلد های خودتون رو custom کنید .
ایجاد form = این قابلیت با دادن نام مدل فرمی به صورت کامل برای ما ساخته می شود که به راحتی عمل insert رو برامون انجام میده .
ایحاد module = قابلیت ماژولار بودن Yii همیشه قابل تحسین بوده و تو پروژه ها قابلیت های زیادی رو به برنامه نویس داده که ماژول های خودشو بدون متصل بودن به پروژه اصلی تو همه پروژه هاش استفاده کنه . با استفاده از این قابلیت Gii میشه ماژول مورد نظر رو خیلی راحت ساخت که این ماژول شامل یک کنترلر و view با یکسری کد های پیشفرض هست که این کد های باری مثال یک action index و.. برای راحتی کار می باشد و فایل خود ماژول .
ایجاد extention = این بخش تو ورژن Yii 2 اضافه شده که به راحتی میشه extention مورد نظر خودمون رو باهاش ایجاد کنید .

ابزار gii که مورد بررسی قرار گرفته برای نسخه 2 فریمورک هست و سعی شد امکانات به صورت اختصار توضیح داده بشه و اصلا وارد کد نشدم .
امکانات گفته شده امکانات فعلی هست یعنی نسخه Yii 2.0.4 در حالی که این فریمورک تازه اومده اگر به لینک گیتاپ پروژه بروید بیش از 30 امکان هست که قراره تو ورژن های بعدی اضافه بشه .
تمام themplate های ایجاد مدل یا کنترلر یا crud و همه قابل تغییر هست یعنی به این معنی که شما میتونید هر دفعه که از gii استفاده میکنید از themplate خودتون استفاده کنید برای مثال themplate خود gii رو دستکاری کنید و موقع ایجاد مدل تابع beforesave هم با یکسری مقادیر بهش اضافه کنید به این شکل که هر دفعه که مدل ساخته میشه از themplate شما استفاده میشه .
تمام امکانات گفته شده مثل ایجاد crud و مدل و... از امکانات خود Yii استفاده میکند به این معنا که برای اینجاد فرم از activeform و برای گرید از GridView و برای view از DetailView استفاده شده است .
فریمورک های دیگه از این ابزار محروم هستند و تنها می توانند یکسری فایل خاص برای مثال فقط مدل رو بسازند که باید چند تا دستور cmd بزنن تا فایل ایجاد شود و بعد از ایجاد حتی نصف کد ها و امکانات ساخت مدل Gii رو ندارند و در واقع یه فایل خام هستند .
یکسری از افراد Gii رو مفید و کارا نمیدونند در حالی که بسیار کاربردی هست برای مثال تو یه پروزه معمولی 20 تا جدول داشته باشید و تقریبا 10 تا کنترلر هم داشته باشید تا اینجا باید 20 تا مدل بسازید و تمام اماکانات گفته شده رو براش بزارید ولیدیشن و رول ها و label ها و... غیر از اون باید 10 تا کنترلر بسازید و 10 تا پوشه برای view و تازه فایل های view هم هست . غیر از این موارد داخل پنل مدیریت سایت قطعا می خواهید عملیات crud هم انجام بدید چون پنل مدیریت هست پس تقریبا به 20 یا 18 تا عمل insert , update , delete , view هم بزارید که خودش کلی فایل view میخاد کلی کد برای اکشن های این موارد همه این موارد رو بزاریم کنار هم 1. 20 تا مدل با کلی امکانات 2. 10 تا کنترلر با پوشه های و view ها 3. ایجاد 20 یا حداقل 18 تا crud ( چهاز عمل اصلی ) برای همه جدول ها تو پنل مدیریت . 4. و خیلی موارد دیگه که ازش گذشتم
اینها برنامه نویس رو خیلی خسته و دچار کار های تکراری میکنه و تو پروژه اول یا دوم اینکارا دل شما رو میزنه پس بهتره یکسری کار های روتین رو سریع انجام بدیم وفوکس خودمون رو پروژه اصلی بزاریم .
در نهایت چند تا عکس از محیط Gii و محیط ایجاد

132875

ایجاد مدل

132876


132877


132878

132879