CakePHP একটি MVC (Model-View-Controller) ভিত্তিক ফ্রেমওয়ার্ক, এবং এর ডিরেক্টরি স্ট্রাকচার খুবই সংগঠিত এবং মডুলার। এটি ডেভেলপারদের কোড রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি সহজ করার জন্য ডিজাইন করা হয়েছে। নিচে CakePHP এর ডিরেক্টরি স্ট্রাকচার এবং প্রতিটি ডিরেক্টরির কাজ বিস্তারিতভাবে আলোচনা করা হলো।
CakePHP ডিরেক্টরি স্ট্রাকচার
my_cakephp_app/
│
├── bin/ # CakePHP এর CLI টুলস
├── config/ # অ্যাপ্লিকেশন কনফিগারেশন ফাইল
├── logs/ # লগ ফাইল
├── plugins/ # CakePHP প্লাগইন
├── src/ # অ্যাপ্লিকেশন কোড (Model, View, Controller)
├── templates/ # ভিউ টেমপ্লেট
├── tests/ # টেস্ট ফাইল
├── tmp/ # ক্যাশ, সেশন, টেম্পোরারি ফাইল
└── vendor/ # তৃতীয় পক্ষের লাইব্রেরি (Composer দ্বারা পরিচালিত)
প্রতিটি ডিরেক্টরির ভূমিকা
১. bin/
এই ডিরেক্টরিটি CakePHP এর CLI (Command Line Interface) টুলস ধারণ করে, যেমন cake কমান্ড যা অ্যাপ্লিকেশন তৈরি, মাইগ্রেশন, স্ক্যাফোল্ডিং, টেস্টিং ইত্যাদি কাজের জন্য ব্যবহৃত হয়। এটি ডেভেলপারদের দ্রুত অ্যাপ্লিকেশন ম্যানেজমেন্ট করতে সাহায্য করে।
উদাহরণ:
bin/cake server: লোকাল সার্ভারে অ্যাপ্লিকেশন চালানোbin/cake bake: মডেল, কন্ট্রোলার, টেমপ্লেট তৈরি করা
২. config/
এই ডিরেক্টরি অ্যাপ্লিকেশনের কনফিগারেশন ফাইল ধারণ করে। এখানে ডাটাবেস কনফিগারেশন, রাউটিং কনফিগারেশন এবং অন্যান্য অ্যাপ্লিকেশন সম্পর্কিত সেটিংস থাকে।
config/app.php: প্রধান কনফিগারেশন ফাইল যেখানে ডাটাবেস, লগিং, ক্যাশিং, সিকিউরিটি, এবং অন্যান্য সেটিংস কনফিগার করা হয়।config/routes.php: রাউটিং ফাইল, যেখানে URL রাউটিং নিয়ম নির্ধারণ করা হয়।config/bootstrap.php: অ্যাপ্লিকেশন স্টার্টআপ কনফিগারেশন, যেখানে প্রাথমিক সেটআপ কোড থাকে।
৩. logs/
এই ডিরেক্টরিটি অ্যাপ্লিকেশনের লগ ফাইল ধারণ করে। CakePHP ত্রুটি লগ, ডিবাগ তথ্য, এবং অন্যান্য লগ ডেটা এখানে রাখে। এটি ডেভেলপারদের জন্য অ্যাপ্লিকেশন মনিটরিং এবং ত্রুটি নির্ধারণে সহায়ক।
৪. plugins/
এখানে আপনি CakePHP এর জন্য প্লাগইন বা এক্সটেনশন রাখতে পারবেন। প্লাগইনগুলি CakePHP অ্যাপ্লিকেশনের ফিচার এক্সটেন্ড করার জন্য ব্যবহৃত হয়। আপনি প্লাগইন ব্যবহার করে নতুন ফিচার যোগ করতে পারেন, যেমন ইমেইল সিস্টেম, ইউজার অথেনটিকেশন, ইত্যাদি।
৫. src/
এই ডিরেক্টরি অ্যাপ্লিকেশনের মূল কোড ধারণ করে। এটি MVC (Model-View-Controller) ফোল্ডারিং প্যাটার্ন অনুসরণ করে, যার মধ্যে থাকে:
Model/: মডেল ফোল্ডার, যা অ্যাপ্লিকেশনের ডেটা এবং লজিককে প্রতিনিধিত্ব করে।Controller/: কন্ট্রোলার ফোল্ডার, যা রিকোয়েস্ট পরিচালনা করে এবং মডেল এবং ভিউয়ের মধ্যে যোগাযোগ স্থাপন করে।View/: ভিউ ফোল্ডার, যা ইউজার ইন্টারফেস (UI) এবং ডেটা প্রদর্শন করে।
৬. templates/
এই ডিরেক্টরি ভিউ টেমপ্লেট ধারণ করে, যেখানে HTML এবং PHP কোড দিয়ে ইউজার ইন্টারফেস তৈরি করা হয়। এখানে আপনার ব্লেড ফাইলগুলির মতো টেমপ্লেটগুলি থাকবে যা ডেটা উপস্থাপন করবে।
templates/: সাধারণভাবে ভিউ ফাইলগুলি থাকবে (যেমন:posts/index.php)
৭. tests/
এই ডিরেক্টরি টেস্ট ফাইল ধারণ করে। এটি CakePHP অ্যাপ্লিকেশনের ইউনিট টেস্ট, ইন্টিগ্রেশন টেস্ট এবং ফিচার টেস্ট রাখে। অ্যাপ্লিকেশনটিকে আরও নির্ভুলভাবে পরীক্ষা করার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ।
tests/TestCase/: এখানে আপনি টেস্ট কেস এবং ফিচার টেস্ট ফাইল রাখতে পারবেন।
৮. tmp/
এটি সাময়িক ফাইল সংরক্ষণ করতে ব্যবহৃত হয়, যেমন ক্যাশ, সেশন ডেটা এবং অন্যান্য টেম্পোরারি ফাইল। এখানে থাকা ফাইলগুলো সাধারণত অ্যাপ্লিকেশনের চলমান প্রসেসে প্রয়োজন হয় এবং পরে মুছে ফেলা হয়।
৯. vendor/
এটি Composer দ্বারা ইনস্টল করা তৃতীয় পক্ষের লাইব্রেরি এবং প্যাকেজগুলির জন্য। এখানে আপনি CakePHP ফ্রেমওয়ার্কের বাইরের যেকোনো ডিপেনডেন্সি বা লাইব্রেরি পাবেন। এটি Composer দ্বারা স্বয়ংক্রিয়ভাবে পরিচালিত হয়।
CakePHP এর ডিরেক্টরি স্ট্রাকচার একটি পরিষ্কার, সংগঠিত এবং স্কেলেবল পদ্ধতিতে অ্যাপ্লিকেশন কোড এবং কনফিগারেশন ফাইলগুলোকে ভাগ করে। MVC আর্কিটেকচার অনুসরণ করে, ডিরেক্টরি গুলি কোডের ভিন্ন ভিন্ন দিক আলাদা করে রাখা সম্ভব, যা কোড রক্ষণাবেক্ষণ এবং পরীক্ষণ সহজ করে। ডেভেলপাররা এই স্ট্রাকচারটি অনুসরণ করে সহজেই CakePHP অ্যাপ্লিকেশন তৈরি ও পরিচালনা করতে পারেন।
Read more