برگزیده های پرشین تولز

آموزش Zend Framwork

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
Last edited:

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
قسمت اول آموزش فریمورک ZEND
به طور کلی وقتی می خواهیم از یک فریمورک استفاده کنیم باید از خودمون این سوال رو بپرسیم که هر فریمورک چه مزایا و معایبی داره و همچنین چه مقدار باید زمان روی اون بزاریم تا به موثرترین روش از اون بهره بگیریم.
باید توجه داشته باشیم که اساس ZEND بر پایه PHP می باشد, البته شاید با شنیدن نام این پلتفرم حس بدی یا خوبی به شما دست بده اما باید بدونیم این یک پلتفرمی هست که نباید به آسانی از اون بگذریم چند دلیل عمده این مطلب اینه که خب PHP در سطح گسترده ای استفاده می شود و بسیار هزینه های میزبانی پایینی دارد همچنین منابع مختلف و بسیاری در سطح وب برای اون وجود داره و این قابلیت رو داره از پروژه های کوچک تا بزرگ از اون استفاده می شود.
خب از اونجایی که PHP یک زبان زنده و خوب هستش ما قصد داریم یک روش کار با PHP که کد های خوبی از آب درمیاره با امکانات زیاد و الگو های پیشرفته و همچنین ایجاد امکان استفاده از اسکریپت نویسی و شئ گرایی PHP را به شما معرفی کنیم.
اما ZEND دقیقا چه چیزی هست؟
ZEND یک فریمورک بر پایه PHP بوده که همونطور که می دونید PHP یک زبان شئ گراست پس طبیعتاً این فریمورک بر همین پایه هست.
امروزه تقریباً تمام فریمورک ها نیاز به داشتن عملکردی بر پایه MVC هستند که مخفف (Model,View Controller) می باشد و این فریمورک این قابلیت را دارا می باشد همچنین مفهوم loose coupling به معنای وابستگی اجزا و کامپوننت ها به یکدیگر نیز رعایت شده و ویژگی پلاگ اند پلی به خوبی در اون کاربرد دارد و در نهایت ویژگی های پیشرفته ای نظیر ایجاد جداول رابطه ای در دیتابیس، ارسال نوتیفیکیشن و ایمیل، قابل تست بودن و... .
با این تفاسیر ZEND هر کاری برای همه انجام نمیده و چالش های خودش رو هم داره.
چون این فریمورکMVC full stack بوده سنگین می باشد و به طور مثال برای ساختن یک صفحه وب مناسب نمی باشد.
از اونجایی که در ZEND کدنویسی به صورت مرتب و منظم هست، برنامه نویس ها نیاز دارند زمانی را صرف کنند تا به منطق این فریمورک برسند و با روش اون کد نویسی رو انجام دهند البته این یک ویژگی خوب بوده که ممکنه برای بعضی ها که به دنبال سریع نتیجه گرفتن هستن کمی نا مناسب باشه.
شاید جالب باشه برای افرادی مانند مدیر ارشد فناوری اطلاعات و حتی رده های بالاتر مدیریتی یک سازمان که موارد کاربرد ZEND رو بدونن:
در ابتدا باید از خودمون این سوال رو بپرسیم که چه نوع سازمان و منابعی در حال حاضر در اختیار داریم.
اگر سازمان دارای یک برنامه بر پایه PHP می باشد ZEND توانایی این رو داره که کد های شما رو پایدار کنه و برای برنامه نویسان امکانات بسیاری رو فراهم کنه.
اگر سازمان شما در حال توسعه و حرکت سریعی می باشد و منابع PHP راحت در اختیار شما بوده و بسیاری ZEND را می شناسن، بکار بردن این فریمورک زمان محدودی نیاز داشته و نسبت به پلتفرم هایی مثل java و net. زمان کمتری خواهد برد.
حتی اگر از سایر پلتفرم ها استفاده می کنید می توانید برنامه های دیگری با ZEND گسترش دهید.
اما سرعت ZEND در مقایسه با سایر برنامه ها چگونه می باشد؟
در این رابطه ZEND در میانه راه قرار دارد یعنی نسبت به برنامه هایی که با PHP نوشته می شوند(plain PHP) که با وجود اینکه سریع توسعه داده می شوند اما به همون اندازه بعد از مدتی اختصاصی شده و قابلیت تغییر رو از دست می دهند در این مقایسه ZEND از وابستگی کمتری استفاده می کنه و استاندارد های بهتری ارائه می دهد و به همون اندازه می تونه سریعتر باشه اما سرعت فریمورک هایی مثل Yii یا django پایتون رو نداره.
در مجموع:
- ZEND یک فریمورک قدرتمند بوده که در بسیار از شرکت ها و سازمان ها استفاده می شود.
- برنامه نویسان و انجمن های بسیاری که در این رابطه فعالیت دارند وجود دارد.
- منابع و Plugin های این فریمورک به راحتی در دسترس عموم قرار دارد.
-شما در دنیای open source هستید و از لحاظ پشتیبانی حرفه ای مشکلی نخواهید داشت.
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
آشنای با مفهموم و ساختار ماژول در فریمورک ZEND
برای شروع به چه چیزهایی نیاز دارید؟
در قسمت اول آموزش به معرفی فریمورک قدرتمند ZEND پرداختیم در ادامه به معرفی ماژول می رسیم.
خب در این مورد کار ساده ای داریم چون نیاز داریم که PHP، ‌Apache و mysql رو داشته باشیم خب اگر از یکی از توزیع های سیستم عامل لینوکس استفاده میکنین که مشکلی ندارید و فقط باید طریقه نصب آنها رو بدونید اما اگر از سیستم عامل های ویندوزی یا مک استفاده می کنید باید از WAMP برای ویندوز و MAMP برای مک استفاده کنین البته ما اینجا قصد نداریم آن ها را توضیح بدیم فقط محض اطلاع.
ماژول ها در ZEND چه چیزی هستند؟
اجازه بدید در ابتدا ببینیم ماژول ها در ZEND چه چیزهایی هستند و در معماری این فریمورک چه جایگاهی دارند.
بهترین تعریف اینست که ماژول ها رو با container یا نگه دارنده های کد های برنامه شما مقایسه کنیم.این نگه دارنده ها فواید زیادی دارند مانند:
-application grouping: امکان دسته بندی و گروه سازی برنامه بر اساس یک منطق یا ویژگی
-middleware: امکان ایجاد پشته میانی که از طریق اون ماژول هایی برای ایمیل و نوتیفیکیشن ها و ... مدیریت بشه.
-Re-usable: ماژول ها امکان به اشتراک گذاری و استفاده مجدد در پروژه های دیگر را دارند.
-code compartmentalization: یا جداسازی متایز کدها تا بدین ترتیب اسامی مشابه دچار تضاد با اسم کلاس های نشوند.
از دید معماری ZEND با ویژگی module manger مسولیت مدیریت پشته ، لود کردن و تنظیمات ماژول ها را داره می کنه. اما در ZEND زمانی که شما از skeleton یا از تنظیمات پیش فرض ZEND استفاده می کنید اولین اتفاقی که می افتد ماژول Application لود می شود که مانند یک ماژول global می باشد و ویژگی های خوداجرا کنندگی و نمایش خطا ها را دارد سپس برنامه به دنبال هر ماژولی که تنظیم شده باشد می گردد که معمولاً ماژول های custom می باشند که ما می سازیم یا و توسط یک پلاگین vendor یا third-party ساخته شدند.
زمانی که این ماژول ها لود شدند می توانند به تنهایی در برنامه ها عمل کنند یا با ماژول های دیگر رابطه داشته باشند که این موضوع به توسعه دهنده ماژول بستگی دارد که اون ماژول با قسمت های دیگر چه رابطه ای داشته باشد.
ساختار دایرکتوری ماژول ها:
بسیار عالی،‌حالا ما قصد داریم اولین ماژول را ایجاد کنیم. ممکنه این کار خسته کننده یا حتی حوصله سر بر باشه اما شما یک الگو در اختیار خواهید داشت پس قدم به قدم با ما همراه باشید تا اولین ماژول را ایجاد کنیم:
اولین کاری که باید بکنیم کلیه ساختار فولدر هایی که یک ماژول احتیاج داره رو ایجاد کنیم.

module-hirerachy.png


کد های اصلی برنامه در فولدر src قرار میگیرند و نماهای ما یا interface ها در پوشه view قرار خواهند گرفت.
زمانی که برنامه اجرا بشه module manager در ماژولی که به اون معرفی می کنیم دنبال کلاس ماژول در دایرکتوری ها برای لود کردن ماژول می گرده و اون رو در module.php در زیر پوشه src پیدا می کنه و با صدا کردن تابع getconfig در این فایل تنظیمات مورد نظر رو برای لود کردن ماژول بدست میاره.
خب تا اینجا سلسله مراتب ساخت ماژول رو با هم مرور کردیم در ادامه قسمت های مهمتری مثل autoload ماژول رو بررسی می کنیم پس با ما همراه باشید.
 

soroush_tayyebi

Registered User
تاریخ عضویت
15 می 2009
نوشته‌ها
513
لایک‌ها
110
سن
32
محل سکونت
Tehran
تنظیمات ماژول
تا اینجا با ساختار ماژول آشنا شدیم (اگر هنوز مشکلی در این زمینه دارید برای مشاهده مبحث مقدماتی ماژول کلیک کنید).

فایل composer.json:
اولین چیزی که می خوام توجه شما رو بهش جلب کنم فایل composer.json هستش این فایل در مسیر روت برنامه موجود می باشد.
این فایل در واقع یک فایل مدیریت هستش که در کلام ساده dependency ها رو مسیریابی می کنه و قسمت از composer.phar هست.
زمانی که ما قصد داریم ماژولی ایجاد کنیم و اون نیاز به کتابخانه یا هر فایل دیگه ای داره، مسیر فایل های مورد نیاز رو در اینجا وارد می کنیم و این فایل اون هارو دسته بندی می کنه و در دایرکتوری vendor قرار می ده.
دایرکتوری vendor:
این دایرکتوری شامل افزونه های third-party وابسته هست که به برنامه اضافه شده.
در این دایرکتوری به فایل autoload.php بر می خوریم، زمانی که یک ماژول ساخته می شود این فایل مشخص می کند که ماژول چه زمانی و چه جوری لود در محیط کار لود شود.
دایرکتوری public:
این فولدر شامل اطلاعات منابع شما رو شامل می شه مثل فایل ها css، جاوااسکریپت، htaccess و ....
فایل index.html که در این فولدر مشاهده می کنید فایلی هست که به طور پیش فرض زمانی که شما برنامه را اجرا می کنید به شما نشان داده می شه(البته با صدا کردن فایل application.conf.php که به اون هم می رسیم).
دایرکتوری conf:
این دایرکتوری شامل اطلاعاتی درباره برنامه به صورت عمومی هست و در این فولدر
application.conf.php رو مشاهده می کنید که به index.php اشاره دارد.
دایرکتوری module:
این قسمت شامل فولدر application بوده که توسط skeleton برنامه مورد نظر ما از پیش ساخته شده و شامل ماژول هایی عمومی هست که یکسری عمل ها رو انجام میده و ما در اینجا ماژول های خودمون رو می سازیم.
ساختن یک ماژول:
خب برای ساختن یک ماژول باید داخل فولدر modules یک پوشه جدید ایجاد کنیم.
در این قسمت ما قصد ایجاد یک کتابخانه رو داریم که کتاب ها رو لیست کنه و یکسری عملیات دیگه انجام بده. پس یک فولدر ایجاد می کنیم به نام Album (به حروف کوچک و بزرگ دقت کنید) سپس در داخل فولدر جدید یک فولدر به نام config ایجاد می کنیم که مسولیت این رو داره چگونه که به ماژول بگه که وقتی استفاده شد چگونه لود بشه و اتفاقات بعدی چگونه در middleware stack(که توضیح دادیم) بیافته.
فولدر بعدی که می خواهیم بسازیم فولدر src هست که تمام سورس های php در اون قرار می گیره و در آخر فولدر view که الگوهای view در اون قرار می گیره(شامل اطلاعات اسکریپت های php و اطلاعات html ).
حالا می ریم سراغ فولدر src که حاوی اطلاعات کنترلر ها و مدل ها و اطلاعات دیگر است:
در این فولدر یک پوشه دیگه به نام BookList ایجاد می کنیم و در داخل اون به ترتیب سه فولدر Controller،Formو Model رو ایجاد می کنیم. ZEND خیلی علاقه داره که اطلاعات ماژول ها به صورت مرتب و منظم از هم جدا باشند.
حالا برمی گردیم به فولدر view که در داخل ماژول ساختیم و در اون فولدری به نام album ایجاد می کنیم (که یجورایی با ماژول همخونی داره) و در داخل اون فولدر album را می سازیم (که با Controller همخونی خواهد داشت.).
خب تا اینجا فولدر های زیادی رو با هم ایجاد کردیم و در آینده نه چندان دور به طور دقیق‌تری عملکرد اون‌ها رو باهم بررسی می کنیم.
منبع
 
بالا