জেন্ড ফ্রেমওয়ার্কে প্রথম এপ্লিকেশন তৈরী
প্রথমে IndexController.php ফাইলটি খুলুন এবং নিচের কোডটি লিখুন।
IndexController.php ফাইল: tutorial/application/controllers/IndexController.php
এখানে সব কোড আগে থেকেই দেয়া আছে আপনি শুধু ১২ নম্বর লাইনটি লিখুন।
এবং index.phtml ফাইল খুলে নিচের কোড লিখুন।
index.phtml ফাইল:tutorial/application/views/scripts/index/index.phtml
ব্যাস একটা ছোট্র এপ্লিকেশন তৈরী করলেন কন্ট্রোলার এবং ভিউ ব্যবহার করে যেহেতু ডেটাবেস নেই তাই এখানে মডেল এর ব্যবহার করা হয়নি।এখন http://localhost/tutorial/public লিখে এন্টার দিন নিচের মত আউটপুট আসবে।
কোডের ব্যাখ্যা: আগে URL স্ট্রাকচার বুঝতে হবে তারপর এই কোড বোঝা যাবে।জেন্ড ফ্রেমওয়ার্কের URL গুলি এভাবে থাকে www.example.com/user/login এখানে user হচ্ছে কন্ট্রোলার এবং login হচ্ছে একশন ।এই টিউটোরিয়ালের ক্ষেত্রে যেহেতু লোকালহোস্টে দেখাচ্ছি এখানে URL হবে এরকম http://localhost/tutorial/public/user/login যখন ইউজার এরকম কোন URL লিখে ব্রাউজারে এন্টার দিবে তখন index.php ফাইল এই রিকোয়েস্ট টা নেবে (public ফোল্ডারে দেখুন index.php ফাইল আছে),তারপর এই URl কে routing এবং dispatching করবে এবং ইউজারের রিকোয়েস্টকৃত কন্ট্রোলার এবং একশন বের করবে ও দেখাবে।জেন্ড ফ্রেমওয়ার্কে URl দিয়ে করা ইউজারের সব রিকোয়েস্ট আগে এই index.php ফাইলে যায় তাই এই ফাইলটিকে সব রিকোয়েস্টের এন্ট্রিপয়েন্ট বলে।
যাইহোক এবার কোডের ব্যাখ্যা:যখন আমরা http://localhost/tutorial/public লিখে এন্টার দিয়েছি তখন এটা IndexController.php ফাইলের Index কন্ট্রোলার (IndexController) এর index একশনকে এক্সিকিউট করেছে।(indexAction মেথড)
আর indexAction এ যে কাজটি করেছি তাহল view প্রোপার্টিজ এ একটা ভেরিয়েবল assign করেছি।ভেরিয়েবল টি হচ্ছে ‘test’ আর এই ভেরিয়েবলের মান দিয়েছি ‘Learning Zend Framework’ এখানে একটা প্রশ্ন আসতে পারে যে,view প্রোপার্টিজ এ কিভাবে একসেস নেয়া হল অথচ কোন ক্লাস instantiate করা হলনা।এর উত্তর হচ্ছে ViewRenderer নামে একটা একশন হেল্পার আছে যে এই instantiate করে রেখেছে তাই আমরা এই ক্লাস (Zend_View) এর প্রোপার্টিজ এ একসেস নিতে পারলাম এভাবে $this->view আর এরপর assign() ফাংশন দিয়ে test ভেরিয়েবলে একটা মান দিয়েছি।
এখন এই ভেরিয়েবলটি index.phtml ফাইলে echo কমান্ড দিয়ে পাবলিশ করেছি।এই কোডটি এভাবে <?php echo $this->test;?> লিখলেও হত তবে escape() ফাংশনটি ব্যবহার করা হয়েছে কারন এতে কিছু সিকিউরিটি সম্পর্কিত সুবিধা আছে ।
একটা বিষয় লক্ষ্য করেছেন নিশ্চয় indexAction এ যে কোড আছে সেটা আউটপুট পাওয়ার জন্য index.phtml ভিউ ফাইল ব্যবহার করা হয়েছে এবং এই index.phtml ফাইল আছে index ফোল্ডারে।এখানে দুটি বিষয় খেয়াল রাখতে হবে
১. প্রতিটি একশনের জন্য একটা করে ভিউ ফাইল তৈরী করে নিতে হবে।যেমন indexAction এর জন্য index.phtml তৈরী করা হয়েছে এবং এই ভিউ ফাইলের নাম একশনের নাম অনুযায়ী হতে হবে (শুধু Action এই শব্দটুকু বাদ দিয়ে তার আগের শব্দ নিয়ে)।যদি IndexController.php ফাইলে indexAction ছাড়াও আরও একশন থাকত যেমন userAction,loginAction ইত্যাদি তাহলে এদের জন্য আলাদা ভিউ ফাইল যথাক্রমে user.phtml এবং login.phtml তৈরী করে নিতে হত।
২. এই ভিউ ফাইলগুলি সব index নামের ফোল্ডারে আছে কারন এগুলি IndexController.php ফাইলের একশনগুলিকে এক্সিকিউট করছে।যদি আরও কোনো কন্ট্রোলার ফাইল Controllers ফোল্ডারে থাকে তাহলে সেই নাম অনুযায়ী Script ফোল্ডারে একটা ফোল্ডার তৈরী করে নিতে হবে।যেমন ওখানে ErrorController.php নামে একটা কন্ট্রোলার ফাইল আছে তাই Script ফোল্ডারে error নামে একটা ফোল্ডার আছে।
জেন্ড ফ্রেমওয়ার্ক আগে Script ফোল্ডারে কন্ট্রোলার ফাইলের নাম অনুযায়ী ফোল্ডারটি খুজবে,যদি পায় তাহলে এর ভিতরে গিয়ে ঐ ভিউ ফাইলগুলি তালাশ করবে যেগুলি একশন এর নাম অনুযায়ী রাখা হয়েছে।
** http://localhost/tutorial/public এটার পরিবর্তে http://localhost/tutorial/public/index/index লিখলেও হবে অর্থ্যাৎ এখানে index কন্ট্রোলার এর index একশন এক্সিকিউট হয়েছে।এভাবে লেখা হয়নি কারন জেন্ড বাই ডিফল্ট index কন্ট্রোলার এর index একশন এক্সিকিউট করে।
IndexController.php ফাইল: tutorial/application/controllers/IndexController.php
এখানে সব কোড আগে থেকেই দেয়া আছে আপনি শুধু ১২ নম্বর লাইনটি লিখুন।
এবং index.phtml ফাইল খুলে নিচের কোড লিখুন।
index.phtml ফাইল:tutorial/application/views/scripts/index/index.phtml
ব্যাস একটা ছোট্র এপ্লিকেশন তৈরী করলেন কন্ট্রোলার এবং ভিউ ব্যবহার করে যেহেতু ডেটাবেস নেই তাই এখানে মডেল এর ব্যবহার করা হয়নি।এখন http://localhost/tutorial/public লিখে এন্টার দিন নিচের মত আউটপুট আসবে।
কোডের ব্যাখ্যা: আগে URL স্ট্রাকচার বুঝতে হবে তারপর এই কোড বোঝা যাবে।জেন্ড ফ্রেমওয়ার্কের URL গুলি এভাবে থাকে www.example.com/user/login এখানে user হচ্ছে কন্ট্রোলার এবং login হচ্ছে একশন ।এই টিউটোরিয়ালের ক্ষেত্রে যেহেতু লোকালহোস্টে দেখাচ্ছি এখানে URL হবে এরকম http://localhost/tutorial/public/user/login যখন ইউজার এরকম কোন URL লিখে ব্রাউজারে এন্টার দিবে তখন index.php ফাইল এই রিকোয়েস্ট টা নেবে (public ফোল্ডারে দেখুন index.php ফাইল আছে),তারপর এই URl কে routing এবং dispatching করবে এবং ইউজারের রিকোয়েস্টকৃত কন্ট্রোলার এবং একশন বের করবে ও দেখাবে।জেন্ড ফ্রেমওয়ার্কে URl দিয়ে করা ইউজারের সব রিকোয়েস্ট আগে এই index.php ফাইলে যায় তাই এই ফাইলটিকে সব রিকোয়েস্টের এন্ট্রিপয়েন্ট বলে।
যাইহোক এবার কোডের ব্যাখ্যা:যখন আমরা http://localhost/tutorial/public লিখে এন্টার দিয়েছি তখন এটা IndexController.php ফাইলের Index কন্ট্রোলার (IndexController) এর index একশনকে এক্সিকিউট করেছে।(indexAction মেথড)
আর indexAction এ যে কাজটি করেছি তাহল view প্রোপার্টিজ এ একটা ভেরিয়েবল assign করেছি।ভেরিয়েবল টি হচ্ছে ‘test’ আর এই ভেরিয়েবলের মান দিয়েছি ‘Learning Zend Framework’ এখানে একটা প্রশ্ন আসতে পারে যে,view প্রোপার্টিজ এ কিভাবে একসেস নেয়া হল অথচ কোন ক্লাস instantiate করা হলনা।এর উত্তর হচ্ছে ViewRenderer নামে একটা একশন হেল্পার আছে যে এই instantiate করে রেখেছে তাই আমরা এই ক্লাস (Zend_View) এর প্রোপার্টিজ এ একসেস নিতে পারলাম এভাবে $this->view আর এরপর assign() ফাংশন দিয়ে test ভেরিয়েবলে একটা মান দিয়েছি।
এখন এই ভেরিয়েবলটি index.phtml ফাইলে echo কমান্ড দিয়ে পাবলিশ করেছি।এই কোডটি এভাবে <?php echo $this->test;?> লিখলেও হত তবে escape() ফাংশনটি ব্যবহার করা হয়েছে কারন এতে কিছু সিকিউরিটি সম্পর্কিত সুবিধা আছে ।
একটা বিষয় লক্ষ্য করেছেন নিশ্চয় indexAction এ যে কোড আছে সেটা আউটপুট পাওয়ার জন্য index.phtml ভিউ ফাইল ব্যবহার করা হয়েছে এবং এই index.phtml ফাইল আছে index ফোল্ডারে।এখানে দুটি বিষয় খেয়াল রাখতে হবে
১. প্রতিটি একশনের জন্য একটা করে ভিউ ফাইল তৈরী করে নিতে হবে।যেমন indexAction এর জন্য index.phtml তৈরী করা হয়েছে এবং এই ভিউ ফাইলের নাম একশনের নাম অনুযায়ী হতে হবে (শুধু Action এই শব্দটুকু বাদ দিয়ে তার আগের শব্দ নিয়ে)।যদি IndexController.php ফাইলে indexAction ছাড়াও আরও একশন থাকত যেমন userAction,loginAction ইত্যাদি তাহলে এদের জন্য আলাদা ভিউ ফাইল যথাক্রমে user.phtml এবং login.phtml তৈরী করে নিতে হত।
২. এই ভিউ ফাইলগুলি সব index নামের ফোল্ডারে আছে কারন এগুলি IndexController.php ফাইলের একশনগুলিকে এক্সিকিউট করছে।যদি আরও কোনো কন্ট্রোলার ফাইল Controllers ফোল্ডারে থাকে তাহলে সেই নাম অনুযায়ী Script ফোল্ডারে একটা ফোল্ডার তৈরী করে নিতে হবে।যেমন ওখানে ErrorController.php নামে একটা কন্ট্রোলার ফাইল আছে তাই Script ফোল্ডারে error নামে একটা ফোল্ডার আছে।
জেন্ড ফ্রেমওয়ার্ক আগে Script ফোল্ডারে কন্ট্রোলার ফাইলের নাম অনুযায়ী ফোল্ডারটি খুজবে,যদি পায় তাহলে এর ভিতরে গিয়ে ঐ ভিউ ফাইলগুলি তালাশ করবে যেগুলি একশন এর নাম অনুযায়ী রাখা হয়েছে।
** http://localhost/tutorial/public এটার পরিবর্তে http://localhost/tutorial/public/index/index লিখলেও হবে অর্থ্যাৎ এখানে index কন্ট্রোলার এর index একশন এক্সিকিউট হয়েছে।এভাবে লেখা হয়নি কারন জেন্ড বাই ডিফল্ট index কন্ট্রোলার এর index একশন এক্সিকিউট করে।

Post a Comment