লারাভেল সিম্পল টু-ডু লিস্ট

milon.im

আমার বইটা প্রকাশিত হবার পর থেকেই অনেকের কাছ থেকেই একটা অনুরোধ পেয়েছি। সেটা হচ্ছে আমার বইয়ে একটা ডেমো অ্যাপের দরকার ছিল, কিন্তু সেটা দেয়া হয় নি। তাই সবার অনুরোধ রাখতে আমি একটা সিম্পল টু-ডু অ্যাপ তৈরি করেছি। এই অ্যাপটি তৈরি করতে আমি ব্যবহার করেছি লারাভেল ফ্রেমওয়ার্ক ৫.১ ভার্সন এবং মাইসিক্যুয়েল।

এই অ্যাপটির কোড পাবেন গিটহাবে। এখানে অথেনটিকেশন, সিম্পল CRUD(Create, Read, Update, Delete) অপারেশন, রিসোর্সফুল রাউটিং, ফরম মডেল বাইন্ডিং, ফরম রিকোয়েস্ট, ফ্ল্যাশ ম্যাসেজ, পেজিনেশন সহ কিভাবে আপনি আপনার কোড গুছিয়ে লিখতে পারবেন, সে ব্যাপারে আলোকপাত করা হয়েছে।

ল্যান্ডিং পেজ ল্যান্ডিং পেজ

sign-in-page সাইন ইন পেজ

register-page রেজিস্ট্রেশন পেজ

todo-list-page টু-ডু লিস্ট পেজ

new-todo-create-page নতুন টু-ডু তৈরির পেজ

user-profile-page ইউজার প্রোফাইল পেজ

অ্যাপটি আপনার পিসিতে রান করতে হলে প্রথমেই গিটহাবে রিপোজিটরিটি ফর্ক করুন, তারপর ক্লোন করতে নিচের কমান্ডটি দিন-

এরপর ঐ ডিরেক্টরিতে প্রবেশ করুন নিচের কমান্ডটির মাধ্যমে-

এরপর .env ফাইলটি তৈরি করুন নিচের কমান্ডটির মাধ্যমে-

এবার .env ফাইলে আপনার প্রয়োজনীয় পরিবর্তন করে নিন। শুধুমাত্র DB_USERNAME এবং DB_PASSWORD এই…

View original post 83 more words

Yii ফ্রেমওয়ার্ক সম্পর্কে কিছু কথা

yii2

Yii ফ্রেমওয়ার্ক সম্পর্কে কিছু কথাঃ

“Yii” হল একটা ওপেন সোর্স অবজেক্ট ওরিয়েন্টেড উচ্চ ক্ষমতা সম্পন্ন পিএইসপি ফ্রেমওয়ার্ক যেটা দ্রুত ওয়েব অ্যাপ্লিকেশন তৈরির জন্য ব্যবহৃত হয়। Yii এর উচ্চারন হল “Yee” অথবা [ji:] (চাইনিজ ভাষায়) আর এটার অর্থ “সিম্পল এ্যান্ড এভোলুশনারি” (চাইনিজ ভাষায়)। এটার অর্থ “ইয়েস ইট ইস” (ইংরেজীতে)।

“Yii” ফ্রেমওয়ার্ক এর ফিচার্সঃ

১. মডেল ভিউ কন্ট্রোলার ডিজাইন প্যাটার্ন।
২. ডাটাবেজ এক্সেস অবজেক্ট, কুয়েরি বিল্ডার, এক্টিভ রেকর্ড, ডিবি মাইগ্রেশন।
৩. ফর্ম ইনপুট এ্যান্ড ভেলিডেশন।
৪. এজাক্স এনাবল্ড উইগেট।
৫. অ্যাথেন্টিকেশন এ্যান্ড অ্যাথোরাইজেশন।
৬. স্কিনিং এ্যান্ড থিমিং।
৭. ওয়েব সার্ভিসেস।
৮. ইন্টারন্যাশনালাইজেশন এ্যান্ড লোকালাইজেশন।
৯. লেয়ার্ড ক্যাচিং স্কিম।
১০. এরর হ্যান্ডেলিং এ্যান্ড লগিং।
১১. সিকুউরিটি।
১২. ইউনিট এ্যান্ড ফাংশনালিটি টেস্টিং।
১৩. অ্যাটোমেটিক কোড জেনারেশন।
১৪. ফ্রেন্ডলি উইথ থার্ড পার্টি কোড।
১৫. ডিটেইল্ড ডকুমেন্টেশন।
১৬. এক্সটেনশন লাইব্রেরী।

আমি ব্যাক্তিগতভাবে যে কারনে “Yii” ফ্রেমওয়ার্ক এ কাজ করতে পছন্দ করিঃ

১. ক্রুড জেনারেটর (এটা আপনাদেরকে মডেল, ভিউ, কন্ট্রোলার তৈরি করতে সাহায্য করবে)।
২. বিল্ড-ইন টুইটার বুটস্ট্রাপ।
৩. ফর্ম ভেলিডেশন সার্ভার ও ক্লায়েন্ট উভয় দিকে বিল্ড-ইন ভাবে করে থাকে (ফর্ম হেল্পার এর মাধ্যমে)।
৪. বিল্ড-ইন রোল বেসড একসেস কন্ট্রোল (এটার সাহায্যে ইউজার এর রোল, গ্রুব ও পলিছি নির্ধারণ করতে পারবেন)।
৫. ডাটাবেস এক্টিভ রেকর্ড (অবজেক্ট রিলেশনাল ম্যাপার)।
৬. স্টেবিলিটিঃ এখানে স্টেবিলিটি বলতে এটার ভার্সনকে বুঝানো হয়েছে। অন্যান্য ফ্রেমওয়ার্ক এর মত এটি দ্রুত পরিবর্তিত হয়না। যেমনঃ ২ থেকে ৩ কিংবা ৪ থেকে ৫, যাতে করে আপনাকে আপনার প্রজেক্ট নিয়ে চিন্তিত থাকতে হবেনা সুধু মাইনর কিছু পরিবর্তন করলেই আপনি ভার্সন আপগ্রেড করতে পারবেন।

এবং আরও অনেক ফিচার।

এতক্ষণ আমি আপনাদেরকে সুধু “Yii” সম্পর্কে বললাম। এখন আমি আপনাদেরকে Yii2 সম্পর্কে সামান্য ধারণা দিতে চাচ্ছি। আমি জানি আমাদের মধ্যে অনেকেই “Yii” ব্যাবহার করেছি।

“Yii2” হল “Yii1” এর রি-রাইট করা। এটি রান করতে পিএইসপি নুন্যতম ৫.৪ লাগে। “Yii2” পিএইসপি নুন্যতম ৫.৪ সাপোর্ট করার জন্য পিএইসপির মোটামুটি সকল প্রকার নতুন ফিচার ব্যাবহার করা হয়েছে। “Yii1” পিএইসপির পুরানো ভার্সন ব্যাবহার করত আর এজন্য নতুন ওয়েব টেকনোলোজি থেকে অনেক পিছিয়ে ছিল। এক কথায় বলা যায় পিএইসপির অন্যান্য ফ্রেমওয়ার্ক সিম্ফোনী, লারাভেল এর নতুন ভার্সন থেকে এটা পিছিয়ে ছিল। আর বর্তমান টেকনোলোজির সাথে খাপ খাইয়ে চলার জন্যই “Yii2” ডেভেলপ করা হয়। আর “Yii2” তে এখন কম্পোজার থেকে শুরু করে, ডাটাবেস মাইগ্রেশন, স্কিমা তৈরি, নেমস্পেস এর সঠিক ব্যাবহার, পিএইসপির ফুল অবজেক্ট অরিয়েন্টেট এর ব্যাবহার করা হয়েছে।

আপনারা কম্পোজার ব্যাবহার করে খুব সহজেই এইটা ইন্সটল করে নিতে পারবেন।

এর জন্য নিচের কমান্ডটা লিখতে হবে আপনার প্রজেক্টের ডিরেক্টোরিতে গিয়ে টার্মিনাল কিংবা কমান্ড প্রম্পড থেকে।

php composer.phar global require "fxp/composer-asset-plugin:1.0.0"

[বিঃদ্রঃ উপরের কমান্ডটি কম্পোজার এ্যাসেট প্লাগিন ইনস্টল করার জন্য]

php composer.phar create-project yiisoft/yii2-app-basic basic 2.0.3

অথবা

php composer.phar create-project yiisoft/yii2-app-advanced advanced 2.0.3

[বিঃদ্রঃ আপনার মেশিনে পিএইসপি আর কম্পোজার ঠিকঠাক মত কনফিগার করা থাকলে এইভাবে লিখলেই হবে ]

composer create-project yiisoft/yii2-app-basic basic 2.0.3

১ম (বেসিক) টি হল ফ্রন্ট এন্ড টেমপ্লেট বেসড অ্যাপ্লিকেশন তৈরি করার জন্য আর ২য় (আডভান্সড) টি হল ফ্রন্ট এন্ড + ব্যাক এন্ড টেমপ্লেট বেসড অ্যাপ্লিকেশন তৈরি করার জন্য।

২য় টি ব্যাবহার করলে আপনাকে নতুন করে ইউজার লগিন ও রেজিস্ট্রেশন নিয়ে কাজ করতে হবে না সুধু আপনার পছন্দমত পরিবর্তন করে নিলেই হবে ।

আপনারা নিজে নিজে ক্রুড জেনারেটর ট্রাই করে দেখবেন। এটা আপনাদের ডেভেলপ সময় অনেক বাচিয়ে দিবে কারণ এটা বেসিস এইসটিএমএল ভিউ সহ সব কিছু আপনার জন্য রেডি করে রাখবে সুধু আপনার পছন্দমত একটু পরিবর্তন করে নিলেই হবে। “Yii2” কিংবা “Yii” তে জেনারেটর ব্যাবহার করার জন্য “Gii” নামক টুলটি

ব্যাবহার করতে হবে এই লিংক থেকে এটি সম্পর্কে ধারনা পাবেন।

সময় সল্পতার কারনে আমি আপনাদেরকে পুর বিষয়ে টিউটোরিয়ালের মাধ্যমে দেখাইতে পারলামনা।

নিচে কিছু লিংক দিয়ে দিলাম ওইখান থেকে দেখে নিবেন আশা করি আপনাদের ভাল লাগবে এই ফ্রেমওয়ার্কটি ইনশাল্লাহ।।

http://www.yiiframework.com/doc-2.0/guide-index.html
http://stuff.cebe.cc/yii2-guide.pdf
http://www.yiiframework.com/doc-2.0/guide-start-gii.html
http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

সহজ কথায়, MVC এমভিসি (মডেল-ভিউ-কন্ট্রোলার) প্যাটার্ণ

Originally posted on : Abu Ashraf Masnun | whovian …

MVC

এমভিসি বা মডেল-ভিউ-কন্ট্রোলার খুবই জনপ্রিয় একটি প্যাটার্ন । বিশেষ করে যদি আপনি ওয়েব নিয়ে কাজ করেন তাহলে হয়তো ইতোমধ্যে এমভিসি শব্দটির সাথে পরিচিত হয়েছেন । Trygve Reenskaug নামের এক ভদ্রলোক এই প্যাটার্নটির জনক। ভদ্রলোকের নামের বানানটি যতটা না জটিল, তার আইডিয়াটা ঠিক ততটাই সহজবোধ্য । এমভিসি প্যাটার্নের মূল বক্তব্য হলো এই প্যাটার্নে তিনটি কম্পোনেন্ট থাকবে – একটি মডেল যেটি ডাটা নিয়ে কাজ করবে, একটি ভিউ যেটার কাজ হবে মডেলকে ভিজ্যুয়ালাইজ করা এবং একটি কন্ট্রোলার যেটি ব্যবহারকারী এবং সিস্টেমের মধ্য সমন্বয়কারী হিসেবে কাজ করে । Reenskaug এমভিসি প্যাটার্নের উপর একটি ওয়েব পেইজ মেইনটেইন করেন যেখানে এমভিসি এর উপরে বিশদ বর্ননা পাওয়া যাবে – http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

আমরা যদি এমভিসি কম্পোনেন্টগুলোর দিকে নজর দেই তাহলে দেখবো –

মডেল: মডেলের কাজই হলো ডাটা নিয়ে কাজ করা । মডেল হতে পারে একটি অবজেক্ট কিংবা অনেকগুলো অবজেক্ট এর একটি স্ট্রাকচার । একটি সিস্টেমের সব ধরণের নলেজ বা ডাটা মডেল দিয়ে রিপ্রেজেন্ট করা যায় । ক্ষেত্রবিশেষে মডেল তার অবস্থা পরিবর্তন হলে (যেমন: কোন ভ্যালুর মান পাল্টে গেলে) কন্ট্রোলার বা ভিউকে নোটিফাই করে যাতে প্রয়োজনীয় প্রসেসিং করা সম্ভব হয় । ওয়েবে সাধারণত এ ধরণের নোটিফিকেশন এর সুযোগ থাকে না ।

ভিউ: ভিউ এর কাজ হচ্ছে মডেলকে ব্যবহারকারীর সামনে তুলে ধরা । সাধারণত ভিউ মডেল থেকে ডাটা নিয়ে সেটাকে ব্যবহারকারীর কাছে সহজবোধ্য রূপে তুলে ধরে ।

কন্ট্রোলার: কন্ট্রোলার ব্যবহারকারীর কাছ থেকে তথ্য সংগ্রহ করে আবার ব্যবহারকারীর প্রয়োজনমত ভিউ উপস্থাপন করে । কন্ট্রোলারই বলে দেয় ভিউ কোন মডেল থেকে ডাটা নিয়ে কিভাবে উপস্থাপন করবে । এছাড়াও কন্ট্রোলার মডেলে নানা ধরণের পরিবর্তন করতে পারে প্রয়োজনমত ।

এই প্যাটার্নটি অনেক ধরণের সফটওয়্যার ডিজাইন করার ক্ষেত্রেই ব্যবহারযোগ্য । ডেস্কটপ, মোবাইল কিংবা ওয়েব এ্যাপ্লিকেশন – সব জায়গাতেই এই প্যাটার্নটি কমবেশী প্রচলিত । তবে অন্যান্য প্ল্যাটফর্মের চাইতে ওয়েবে বোধহয় একটু বেশীই পরিচিত ।

উদাহরণ হিসেবে আমরা যদি একটি সাদামাটা স্ট্যাটিক ওয়েব পেইজের কথা চিন্তা করি তাহলে দেখবো –

# মডেল: এইচটিএমএল এখানে মডেল হিসেবে কাজ করছে । ওয়েব পেইজের সকল তথ্য কিন্তু এইচটিএমএল হিসেবেই থাকছে ।
# ভিউ: এই এইচটিএমএল ট্যাগগুলোকে কিভাবে ব্যবহারকারীর সামনে তুলে ধরতে হবে সেটা নির্দেশ করার জন্য আমরা সিএসএস ব্যবহার করি ।
# কন্ট্রোলার: জাভাস্ক্রীপ্ট ব্যবহার করে আমরা নতুন নতুন এইচটিএমএল যেমন যোগ করতে পারি তেমনি পারি সিএসএস পরিবর্তন করতে ।

তাহলে এখানেও সেই এমভিসি প্যাটার্নের দেখা মিলছে । এবার দেখা যাক একটি ডাইনামিক ওয়েব এ্যাপ্লিকেশন এর ক্ষেত্রে কি হতে পারে । মনে করি একটি ওয়েব এ্যাপ্লিকেশন যেটির কাজ হচ্ছে একটি ক্লাসের স্টুডেন্টদের তালিকা প্রদশর্ন করা । তাহলে –

# মডেল: সকল স্টুডেন্টদের তথ্য । সম্ভবত এই তথ্য একত্রে একটি ডাটাবেইজে সংরক্ষিত থাকবে এবং মডেল ব্যবহার করে আমরা এই তথ্য এ্যাক্সেস করতে পারবো ।
# ভিউ: স্টুডেন্টদের তালিকা যেটি কিনা এইচটিএমএল হিসেবে একটি সুন্দর টেবিলে রোল নম্বরের ক্রমানুযায়ী প্রদর্শিত হবে ।
# কন্ট্রোলার: কন্ট্রোলার জানবে কোন মডেল থেকে স্টুডেন্টদের ডাটা সংগ্রহ করতে হবে, রোল নম্বর অনুযায়ী কিভাবে সাজাতে হবে অতপর কিভাবে এই ডাটা থেকে ব্রাউজারে প্রদর্শনযোগ্য এইচটিএমএল কোড আউটপুট করা যাবে ।

আমরা যদি হালের জনপ্রিয় পিএইচপি ফ্রেমওয়ার্ক লারাভেলের মত করে চিন্তা করি তাহলে দেখবো –

# মডেল অবজেক্টগুলো সরাসরি ডাটাবেইজের টেবিলকে রিপ্রেজেন্ট করে । একেকটি মডেল ব্যবহার করে আমরা একেক টেবিল থেকে ডাটা এ্যাক্সেস করতে পারি ।
# ভিউ থাকে এইচটিএমএল এর মত বিশেষ টেম্প্লেট যেটা জানে কিভাবে এইচটিএমএল কোড আউটপুট করতে হবে ।
# কন্ট্রোলার অবজেক্টগুলো ব্যবহারকারীর ইচ্ছামত প্রয়োজনীয় মডেল থেকে ডাটা এনে ভিউ তৈরি করে দেয় ।

যেমন: যখন একজন ব্যবহারকারী /students/all – এই ঠিকানা ভিজিট করবেন তখন সব স্টুডেন্টদের তালিকা দেখাতে হবে । যখনই ওয়েব এ্যাপ্লিকশেন এই রিকোয়েস্টটি পায় তখন সে কন্ট্রোলারকে জানায় যে ব্যবহারকারী সব স্টুডেন্টদের তালিকা দেখতে চাচ্ছে । কন্ট্রোলার তখন ঝটপট Student মডেল এর কাছ থেকে সব স্টুডেন্ট এর তথ্য সংগ্রহ করে নেয় । এরপর সেগুলোকে রোল অনুযায়ী সাজিয়ে পাঠিয়ে দেয় ভিউ এর কাছে । ভিউ তখন মডেল হতে পাওয়া ডাটা সুন্দর করে এইচটিএমএল হিসেবে আউটপুট দিয়ে দেয় ।

কি করে বুঝবেন যে আপনার এ্যাপ্লিকেশনটি সঠিকভাবে এমভিসি প্যাটার্ন অনুসরণ করছে? নিজেকে জিজ্ঞাসা করুন এই এ্যাপ্লিকেশনটি থীমেবল কিনা । অর্থাৎ চাইলেই আপনি এটির জন্য অনেকগুলো থীম তৈরি করে ডাইনামিকালি থীম পরিবর্তন করতে পারছেন কিনা । যদি সেটা সম্ভব হয় তবে সম্ভবত আপনি সঠিকভাবেই এমভিসি ফলো করেছেন আর যদি সম্ভব না হয় তবে আপনি এমভিসি কম্পোনেন্টগুলোকে আলাদা করতে পারেননি ঠিকমতো ।