آموزش شروع کار با فریمورک زند - Zend framework - نسخهی قابل چاپ +- باشگاه کاربران روماک (https://forum.romaak.ir) +-- انجمن: انجمن طراحی سایت و برنامه نویسی (https://forum.romaak.ir/forumdisplay.php?fid=78) +--- انجمن: کد نویسی (https://forum.romaak.ir/forumdisplay.php?fid=79) +---- انجمن: PHP (https://forum.romaak.ir/forumdisplay.php?fid=46) +---- موضوع: آموزش شروع کار با فریمورک زند - Zend framework (/showthread.php?tid=2996) |
آموزش شروع کار با فریمورک زند - Zend framework - mesterweb - ۹۶/۳/۱۸ برای یک برنامه نویس سخت و زجر آور است که یک نوع سایت و برنامه را برای n بار از اول بنویسد.آن هم برنامه ای که کدها و بخش نمایش(html) آن درهم باشد! آیا تا به حال به این فکر کرده اید که چطور می توانید بخش طراحی را از کد نویسی جدا کنید؟ اگر پاسخ شما بله است پس این مقاله برای شما نوشته شده است ! می خواهیم با شما در مورد یک چارچوب (framework) قدرتمند و رایگان صحبت کنیم که با یادگیری آن ،نه تنها در زمان صرفه جویی خواهید کرد بلکه کیفیت و کلاس کاری تان را نیز تا سطح بالایی ارتقا خواهید داد. چرا باید از Zend Framework استفاده کنیم ؟ بزرگترین هدف ما در استفاده از CMF یا (Content Managment Framework) برای صرفه جویی در زمان است.با استفاده از این گزینه شما می توانید به اهداف زیر دست پیدا کنید: ۱.یک ساختار دائمی برای همه پروژه های شما: مشکل اکثر پروژه های وب یک چیز است:عدم وجود یک ساختار ثابت .ابتدا شما تمام توابع مهم را در یک ماژول قرار می دهید.در پروژه بعدی متوجه می شوید که اشتباه کرده اید و تصمیم می گیرید همه چیز را تغییر دهید.به این ترتیب در طی زمان و انجام پروژه های بیشتر ،سطح دانش شما نیز بالاتر می رود.اما حالا روزی را تصور کنید که باید یکی از قدیمی ترین برنامه های خود را ساپورت کنید. مطمئنم که واقعا خسته کننده و بسیار وقت گیر خواهد بود تا بفهمید هر بخش از کدها چه کاری انجام می دهد.ولی وقتی برنامه های تحت وب تان را بوسیله ی فریم ورک ها بنویسید ،این مشکل کاملا برطرف می شود.زیرا شما مقید به رعایت چاچوب فریم ورک هستید.همین مسئله تضمین می کند که اگر در آینده نیازی به تغییر در کدهای قدیمی تان داشته باشید ،با توجه به چارچوب یکسان ،خیلی سریع به هدف تان خواهید رسید. ۲.بالا بردن سرعت توسعه: کلاس های زیادی در zend framework وجود دارند که خیلی از کارهای عمومی و لازم را برای ما انجام می دهند.دیگر نیازی به اختراع چرخ ندارید زیرا یک KAMAZ با چرخ های آماده در اختیار شماست. ۳.افزایش امنیت: انسان ممکن الخطا است و هر کسی ممکن است در کدهایش خطا داشته باشد،در این بحثی نیست ولی زند فریم ورک به ما کمک می کند تا حد زیادی میزان خطاها را در پروژه کاهش دهیم.چون واقعا بسیاری از اعمال پراستفاده را بوسیله کلاس های توکارش در اختیار ما قرار می دهد و این به معنی نوشتن کدهای کمتر است و کد کمتر = خطای کمتر. کلا زند فریم ورک و استفاده از اون سخت است؟ عده ای عقیده دارند که فهم و درک زند فریم ورک سخت است،همچنین به منابع زیاد سرور نیز احتیاج دارد،البته واقعیت این نیست.اگر شما می توانید php را یاد بگیرید پس می توانید Zend Framework را نیز فرا بگیرید و از آن استفاده کنید ،فقط باید کمی تلاش و همت کنید. مزایا و معایب Zend Framework همه راه حل ها آرمانی نیستند و این فریم ورک نیز از این قاعده مستثنی نیست.هم نکات خوب دارد و هم نکات منفی که در این قسمت آنها را بررسی می کنیم.اجازه بدید با معایب شروع کنیم: ۱.سنگین بودن: برای مثال ،نسخه ۱.۸.a حدود ۱۷ مگابایت است (زیاد نترسید !) با اینکه این خیلی هم زیاد نیست.اگر از این مقدار حجم ترسیده اید ،کافیست به سایز سایر CMS ها نیز نگاهی بیندازید.بسیاری از آنها بیشتر از ۱۰ مگابایت حجم دارند و این حجم زند فریم ورک برای ما سورپرایز نیست ! چون تعداد توابع و کدهای بسیار زیادی دارند. ۲.نیاز به زمان زیاد برای یادگیری: در این مورد یک نسخه واحد وجود ندارد، برای بعضی ها ممکن است یک سال باشد ولی کاربران دیگر طی چند روز آن را فرا بگیرند و اولین برنامه شان راهم بنویسید. به اندازه کافی بد زند فریم ورک رو گفتیم دیگه ! ، حالا می رویم سراغ مزایا: ۱. مجموعه ای از کلاس ها: Zend Framework مجموعه ای از کلاس هاست که به هم گره خورده اند و شاید در یکی پروژه استفاده نشوند ولی به عنوان لوازم یدکی می توانند در کارهای بعدی مورد استفاده قرار گیرند.کلا هر چیزی که برای پروژه پیش رو نیاز دارید در زند فریم ورک موجود است. ۲.وجود کامپوننت هایی برای کار با سرویس های ثانویه (third-party) ۳.کاملا بر پایه روش شی گرایی (Object-oriented) می باشد ۴.بر پایه شیوه MVC می باشد ۵.به خوبی مستندسازی شده است بنابراین بدون هیچ نظریه پردازی نوینی مستقیما سراغ تمرین و استفاده از این فریم ورک باشکوه می رویم.برای آزمایش کار ZF ما به خود آن نیاز داریم (آخرین نسخه را می توانید از لینک انتهای همین صفحه دانلود کنید)،بعد به یک عدد HTTP server مثل Apache همراه با پشتیبانی mod_rewrite .همچنین آخرین نسخه php و mysql.حالا ZF رو می تونید به دو صورت دریافت کنید:
بسته دوم صرفا شامل کتابخانه های فریم ورک است. حالا باید هسته ZF را از حالت فشرده خارج کنید (/ library / Zend) ، البته بهتر است فایل های آن را در دایرکتوری های بالاتر قرار دهید تا بین پروژه های مختلف مشترک باشد و برای هر پروژه نیازی به هسته جدید نباشد.در این صورا اگر ZF را بروز کنید ،تمام پروژه ها بروز می شوند.مثلا در کامپیوتر خودم آن را در آدرس D:\library\ZF\1.7.8\Zend قرار دادم. ایجاد ساختار پروژه اگر موافق باشید ،ساختار فایل ها برای پروژه آینده مان را مشخص کنیم.دو پوشه جدید در پوشه اصلی پروژه ایجاد کنید: application : تمام کدهای پروژه اعم از ماژول ها ،مدل ها ،ویو ها و … در این پوشه خواهند بود. public : تمام فایل های اشتراکی در این پوشه خواهند بود. همچنین فایل های index.php و .htaccess را در همین پوشه root ایجاد می کنیم.کدهای زیر را در فایل htaccess قرار دهید: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
و همچنین یک فایل .htaccess با محتوای زیر به پوشه “public” اضافه کنید: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا سه پوشه دیگر داخل دایرکتوری “application” ایجاد می کنیم: configs : فایل های پیکربندی پروژه داخل این پوشه خواهند بود library : فایل و کتابخانه های اضافی داخل این پوشه قرار می گیرند. modules : و کدهای پروژه داخل این پوشه هستند. بعد از این دستکاری های کوچک ،ما ساختاری مثل زیر خواهیم داشت : دایرکتوری ریشه (root) :
فایل (index.php) اصلی را باز کرده و داخل آن ۴ ثابت (constatnt) قرار می دهیم .این چهار ثابت عبارتند از : PATH_TO_ZF : مسیر فریم ورک زند را مشخص می کند. PATH_TO_APPLICATION : مسیر پوشه “application” را مشخص می کند. PATH_TO_LIBRARY : مسیر کتابخانه های اضافی ما را تعیین می کند. PATH_TO_MODULES : مسیر ماژول ها را مشخص می کند. حالا کد آن : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا مسیر بارگذاری فایل ها را به مفسر می فهمانیم : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
قدم بعدی دریافت Zend_Loader است که بعدا به آن رجوع خواهیم کرد: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا که Zend_Loader فعال شد ،می توانیم Zend_Controller_Front(در موردش بعدا توضیح می دهیم) را نیز فراخوانی کنیم و مسیر ماژول ها را به توزیع کننده(dispatcher) زند بدهیم. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
تا اینجا نتیجه باید شبیه زیر باشد : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اگر توجه کرده باشید، Zend_Loader به صورت خودکار و از روی نام آنها ، آدرس Controller را پیدا کرده و آن را لود می کند.مثلا کنترلی با نام Zend_Controller_Front در مسیر Zend/Controller/Front.php قرار دارد . آشنایی بیشتر با کنترلرها (Controllers) در zend Zend_Controller_Front در واقع کار ایجاد ساختار و اسکلت برنامه را بر عهده دارد ، بنابراین فقط یکبار در ابتدای اجرای برنامه می تواند شروع بکار کند.وقتی شما متد dispatch را فراخوانی می کنید ، مدیر برنامه داخل یک حلقه می رود و سه رویداد رخ می دهد: ۱.Routing : تعیین اینکه چه module ,controller و event هایی می توانند فراخوانی شوند.اگر جزئیات تعیین نشده باشند به این صورت : site.ru/modules/controller/action/var1/value1/var2/value2 . ۲.Dispatching: چک کردن module ,controller و event های فراخوانی شده و فراخوانی همه رویدادهای لازم ۳.Answering : ایجاد بخش مشاهده (view) توسعه ماژول یک پوشه جدید بنام “default” در پوشه modules ایجاد کنید.این اولین ماژول ما خواهد بود.وقتی ما به لینک سایت خود می رویم (مثلا : http://localhost/site.ru ) ،اولین این ماژول اجرا می شود.اسم این ماژول پیش فرض نیز می تواند تغییر کند.این کار با استفاده از متد setDefaultModule که داخل شی Zend_Controller_Front قرار دارد، امکان پذیر است.نکته همه این است که این متد باید قبل از عمل dispatching فراخوانی و اجرا شود و پارامتری که در واقع نام ماژول پیش فرض است ،به آن پاس داده شود.مثلا : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا نوبت آن رسیده است که دو پوشه دیگر داخل پوشه ماژول مان ایجاد کنیم :
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا شما باید یک script برای کنترلر ایجاد کنید.برای این کار پوشه های “scripts/index” را در داخل پوشه “views” ایجاد کنید. تقریبا شبیه این : default controllers IndexController.php views scripts index یک فایل دیگر با نام index.phtml در داخل مسیر views/scripts/index/ ایجاد کنید.حالا سایت را باز کنید، اگر خطایی نبود یعنی تا اینجا درست آمده اید حالا event را اضافه می کنیم : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا شکل کلی کنترلر به این صورت درآمده است : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا داخل فایل view یا همان phtml ، کد زیر را قرار دهید : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
ایجاد یه صفحه برای خطای ۴۰۴ یک کنترلر دیگر با باید برای این خطا ایجاد کنیم و حتما اسمش را حدس زده اید ، ErrorController.php : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حالا باید مانند کنترلر قبلی ، یک فایل view هم برایش ایجاد کنیم در مسیر : /default/views/scripts/error/error.phtml *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
برای تست این هم می توانید آخر آدرس سایت ، یک چیز نامربوط مثل site/qwerty اضافه کنید. تمام شد ! برای گام اول بد نبود و فکر می کنم مسائل مهمی مطرح شد که لازم بودند. فراموش نکنید که یک شبه نمی توان مهارت بالایی در این زمینه کسب کرد و نیاز به زمان و تجربه دارید.در این مطلب در مورد ایجاد ساختار اولیه فریم ورک زند بحث کردیم ولی اگر هنوز در درک مفهوم MVC مشکل دارید، می توانید در گوگل آن را جستجو کنید و به راهنمایی های خوبی برسید. برای آشنایی بیشتر درباره فریمورک زند و مستندات آن به لیتک زیر مراجعه کنید: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید. دانلود فریمورک زند دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید. |