Zend_Layout برهنه و Zend_View
در این مقاله من در استفاده از Zend_Layout و Zend_View همراه با کنترل جلو ساده برای نشان دهد که چگونه ممکن است که به جدا کردن منطق شروع کسب و کار و ارائه نرم افزار در درون تان باشید. تمام کدهای در دسترس است github :
Zend_Layout برهنه و Zend_View در GitHub .
MVC
مشترک الگوی طراحی برای برنامه های کاربردی وب مدرن الگوی MVC است. Zend چارچوب در را پر پشته حالت در یکی از MVC پیاده سازی پی اچ پی و شامل سه بخش است :
- مدل (متر)
- نمایش (پنجم)
- کنترل کننده (ج)
الگوی طراحی شده است به طوری که کسب و کار و منطق ارائه به صورت کاملا جدا از یک دیگر (با منطق کسب و کار در مدل و ارائه در مشاهده) و کنترل کننده نشسته در وسط انجام "ارکستر".
ارائه و منطق
نمایش به کار گرفته است که توسط دو مولفه اصلی Zend_Layout : Zend_View و چهارچوب در Zend. Zend_Layout به عنوان نام آن پیداست به نظر می رسد پس از طرح جنبه از سایت (به طور کلی هدر ، پاورقی ، ستون های فرعی ، و غیره). Zend_View focusses در ارائه داده است که مدل خود را کار کرده است تولید یا مشتق می شوند.
به عنوان توسعه دهندگان و برنامه های کاربردی خود ، تمایل به تکامل ما در مراحل مختلف حرکت می کند ، به طور کلی هر یک از بهبود در قبلی ، نگهداشت بهبود و توسعه. یکی از مسائل اصلی این است که ارائه و منطق هنوز هم می آمیخته و ساده خود را برای شروع جدا کردن این دو.
چی شده با مخلوط کردن دو؟
است دلایل متعددی وجود دارد که چرا با مخلوط کردن قسمت های مختلف نرم افزار ، برای مثال یک طراح کار را در سایت خود ندارد ممکن است بخواهید (یا دانش) برای اسکن در اطراف کد و سعی کردم بفهمم که در آن به ایجاد تغییرات ارائه. در همین راستا یک برنامه نویس (اگر شما مانند من هستید که مهارت های طراحی شترمرغ) ممکن است شکسته شوند در عرق سرد هنگامی که صحبت از طراحی رابط کاربر یا محل کار.
علاوه بر این اگر بعد از شما می خواهم به ارائه سایت های خود را در رسانه های مختلف مانند تلفن همراه ، رایانه های شخصی قرص و یا افشای اطلاعات از طریق خدمات وب (کاپرفیلد / JSON / و غیره)؟ پس از ارائه مخلوط و منطق تو ایستاده ، تقریبا بدون هیچ امیدی برخی هک بسیار زشت به جلو و ارائه به خارج از کد شما ، قبل از تزریق چیزی جدید است. اگر داده ها و ارائه شده است از هم جدا ساخت این تغییرات تقریبا بی اهمیت ، ایجاد یک اسکریپت برای مشاهده جدید قالب جدید و درخواست مستقیم به عنوان مناسب.
جدا کردن دو
در برنامه تحول اقتصادی خود را همیشه برای شروع پیاده سازی کامل راه حل MVC و برنامه نیاز به مهاجرت به آرامی -- گاهی اوقات در حال اجرا کد های قدیمی به صورت موازی با جدید است. شاید که توده ها از منطق (مانند راه اندازی بانک اطلاعاتی اتصال ، ورود و خروج ، دست زدن به کوکی ها ، و غیره) است که برای قالب سازی را برای راه اندازی چارچوب خود را انتخاب ، آماده نیست وجود دارد ، لذا قدیمی و شناخته شده به کار می شود ، کد می تواند همچنان به عنوان استفاده می شود تا زمان چنین می توان آن را بازنویسی / refactored.
توجه : استفاده از Zend_Layout و Zend_View مانند این است که کاملا قابل قبول است در Zend چارچوب چشم انداز و چارچوب طراحی شده است به طوری که فرد می تواند اجزای چارچوب مورد استفاده بدون بقیه. مزیت بزرگ در برنامه های کاربردی در حال تحول و احتمالا یکی از دلایل عمده ای برای جذب بالای آن در برنامه های سرمایه گذاری.
جبهه کنترل
در زیر من ایجاد یک جبهه کنترلر -- یک فایل منفرد طراحی شده برای بلند کردن هر درخواست که به یک فایل نیست در فایل سیستم تطابق دارد. این است که اغلب به دست آورد با استفاده از فایل. htaccess مانند یک مورد استفاده در Zend چارچوب پیش فرض نصب می شود. در داخل کنترل کننده جلوی من خواهد شد راه اندازی طرح و نظر ما و نشان دادن آن در بخشهای مختلف از لغزش نرم افزار را در آن.
تعریف ('APP_PATH' ، dirname (__FILE__). '/..')؛ / / خروجی بافر شروع ob_start () ؛ / / عضویت در مثال Zend_View Zend_Layout : : startMvc () ؛ طرح Zend_Layout $ = : : getMvcInstance () ؛ $ طرحبندی> setLayoutPath (APP_PATH. '/ طرح / اسکریپت ها') -- setViewSuffix> ('phtml') -- setLayout> ('اول') ؛ $ مشاهده = $ طرحبندی> getView () -- setScriptPath> (APP_PATH / نمایش / اسکریپت ها.) --> addHelperPath (. APP_PATH '/ کتابخانه / Zend / نمایش / یاور' ، 'Zend_View_Helper') ؛ / / تنظیم آدرس پایه -- باشه * * تقریبا برهنه ، اما شما این کار لازم نیست! Zend_Controller_Front : : getInstance () --> setBaseUrl ($ _SERVER ['HTTP_HOST']) ؛ سعی کنید { / ** * انجام برخی از نرم افزار مسیر یابی... * -- آیا می توان با استفاده از این به عنوان یک کنترل کننده در جلو و کارگردانی تمام درخواست ها * از طریق این فایل یک (فایل ارائه می کند در پرونده وجود ندارد سیستم * -- توجه داشته باشید روش زیر فقط واقعا برای تظاهرات ، این امر می تواند * وحشتناک با سایت های بزرگ * / سوئیچ ($ ['صفحه'] _GET) { 'شاخص' مورد : 'جز' مورد : $ pageName = $ ['صفحه'] _GET ؛ شکستن ؛ به طور پیش فرض : $ pageName = کاذب ؛ شکستن ؛ } / / نمونه ای از صفحه که یافت نشد... اگر (دروغ === pageName $) { $ responseHeader = 'HTTP/1.1 404 صفحه پیدا نشد' ؛ پرتاب استثنا جدید ('صفحه پیدا نشد') ؛ } / ** * اضافه کردن اطلاعات به نظر شما اینجا شی * شما ممکن است پیاده سازی کنترلر خود و یا برخی از فایل ها شامل * جایی که منطق کسب و کار تا حدودی از نظر منطق از هم جدا * / $ مشاهده displayText - => 'سلام از لوید' ؛ $ مشاهده> buttonText = 'من \' متر غیر فعال است '؛ $ طرحبندی> = $ مشاهده محتوا> رندر ("{$ pageName phtml}") ؛ اکو $ طرحبندی> رندر () ؛ گرفتن} (استثنا $ ه) { / / در حال حاضر تمیز کردن محتوای بافر -- ما نمی خواهیم که برای نمایش ندارد که! ob_clean () ؛ اگر (! isset ($ responseHeader)) { $ responseHeader = 'HTTP/1.1 500 داخلی خطای سرور' ؛ } هدر ($ responseHeader) ؛ $ مشاهده> استثنا = $ ه ؛ $ طرحبندی> = $ مشاهده محتوا> رندر ('error.phtml') ؛ اکو $ طرحبندی> رندر () ؛ }
بافر خروجی در مرحله اول ما شروع ، با انجام این کار ما می توانیم سرصفحه ما را در هر نقطه در مجموعه درخواست و می دانم که این امکان وجود دارد که آنها را ارسال کنید. باید یک استثنا باشد در هر مرحله از اجرای کد این بافر پاک ما و نوشتن یا خطا محتوای پیام و طرح پرتاب می شود. این تضمین می کند که ما ارائه نمی بخشی ارائه محتوای حاوی اشتباهات به کاربر نهایی.
بعد جدید به عنوان مثال از MVC Zend_Layout است تولید شده و ما آن را می گویند که از اسکریپت ها طرح کرده اند phtml فرمت ، به در دایرکتوری یافت می شود در خارج از مسیر های عمومی ، و طرح که به طور پیش فرض ما این است که به نام شاخص (. phtml). از طرح ما پس از آن شیء نمایش (که ما آن را به مجموعه داده ها به ما ارائه گردد) عصاره و درخواست راه اندازی مشابه.
بعد ما راه اندازی شی نمایش با اشاره به پیش فرض یاران Zend_View. یاران مشاهده هستند مجموعه از قابلیت های اضافی راحتی. برای مثال ، نوشتن از شناور در قالب پولی ، و یا ایجاد جدول راه راه گورخر (می توان آنها را خوانده شده در مورد اینجا ). با گسترش Zend_View_Helper_Abstract و اضافه کردن کتابخانه خود را در این نقطه ممکن است خود را به استفاده از یاران برنامه خود را ببینید.
بقیه کد برنامه در حال حاضر در تلاش گرفتن {} {} بلوک پیچیده می شود. باید هر چیزی پرتاب استثنا uncaught ما می توانیم آن و گرفتن نمایش پیغام خطا به کاربر نهایی خوب.
اولین وظیفه ما در گرفتن را امتحان کنید {} {} است که مسیر درخواست ما ، چه می خواهید کاربر را ببینید؟ در اینجا من اجرا برخی بسیار ساده کد تظاهرات جایی که من بررسی ارزش 'صفحه' گرفتن متغیر. شما مسیریابی می تواند بسیار بسیار پیچیده تر. مسیریابی استفاده می شود آنچه تا کنون به تماس نیاز به کد اجرا شود می توانید از / دسته اطلاعات تهیه شده توسط کاربر و سیستم برای گفتن آنچه مشاهده (و احتمالا طرح اسکریپت) استفاده کنید.
در نهایت اگر روتر ما به هر صفحه از آن مجموعه 404 پاسخ کد و نمایش یک صفحه خوبی یافت نشد پیام به کاربر نهایی مطابقت نداشته باشد. در اینجا ، ما پرتاب و گرفتن استثنا خود ما (و استثنا بسیار عمومی در آن) ، اما احتمالا شما می شود ، پرتاب استثنا خود را از درون کد روتر.
هنگامی که ما با موفقیت به روت تقاضای ما از ما می توانیم شروع به انجام کاری با کد. ممکن است که شما کنترل خود را / مدل های اجرا شده و یا شما شامل برخی از کدی که در حال حاضر تا حدودی از هم جدا شده است. در اینجا من مجموعه چند متغیر ساده برای نمایش شی.
به محض این که ما به سادگی به اتمام بارگزاری صفحه نمایش ها با داده های ما است. اگر کد می اندازد استثنا uncaught به هر دلیل این است که در نزدیکی پایین اسکریپت به دام افتاده است. در اینجا ما روشن بافر خروجی در حال حاضر ، مجموعه ای 500 پاسخ هدر ، و به درخواست ما برای ارائه اسکریپت نمایش 'خطا' (که به طور کلی بسیار نسخه ساده شده ای از طرح های عادی / نمایش سیاهههای مربوط و خطا برای چک کردن بعد).
همانطور که مشاهده است ارائه شده برای اولین بار و تزریق به طرح این امکان وجود دارد برای تغییر طرح از درون نمایش ، و در واقع مجموعه ای اضافی مورد نیاز است ، برای مثال ،
- عنوان صفحه
- متا تگ
- اسکریپت ها (آدرس و یا کد) به بخش <head>
- اضافه کردن سبک های اضافی ، و غیره
علاوه بر آن حتی ممکن است برای تغییر کل طرح را از درون نمایش با استفاده از...
طرح بندی () <$ پی اچ پی این -؟> --> setLayout ('alternativeLayout')>؟ به عنوان... و زمانی که مورد نیاز است.
در نهایت...
من امیدوارم که این معرفی شده است مفید باشد به Zend_Layout و Zend_View و از آن خواهد شما را قادر به اجرای خود را شروع MVC اساسی و بهبود maintainibility / توسعه از کد شما. لطفا نگاهی به کد منبع برای استفاده از نمونه هایی از (نگاه کنید به صفحهی راهنمای ترجمهها را برای فایل دستورالعمل).
کد فرض میکند که شما قبلا کار کردم باری نیم خودکار (و یا شما شامل کلاس های لازم). علاوه بر این ، من نمی توصیه می کنند که شما پیاده سازی مسیریابی داده ها و یا تنظیمات همانطور که در بالا ، این است که بسیار ساده برای تظاهرات. برای دیدن کد کامل یک نگاه به کد منبع مرتبط را در بالای این مقاله است.
Zend چارچوب نسخه : 1.10.6


















































به خوبی نوشته شده و اغلب آموزنده ، با تشکر!