এই পর্যন্ত সবকিছু ছিল প্রোসিডিউরাল — একটি স্ক্রিপ্ট উপর থেকে নিচে চলছে, পথে ফাংশন কল করছে। অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) কোড সংগঠিত করার একটি ভিন্ন উপায়: এদিক-ওদিক ভাসমান আলাদা ফাংশন আর ভ্যারিয়েবলের বদলে, আপনি সম্পর্কিত ডেটা আর আচরণকে অবজেক্ট নামের একটি একক ইউনিটে একসাথে গ্রুপ করেন।
একটি ক্লাস হলো একটি ব্লুপ্রিন্ট যা বর্ণনা করে সেই ধরনের একটি অবজেক্টের কী থাকবে আর এটি কী করবে। একটি অবজেক্ট হলো সেই ব্লুপ্রিন্ট থেকে তৈরি একটি প্রকৃত instance। এটি ঠিক একটি বাড়ির স্থাপত্য পরিকল্পনা আর তা থেকে তৈরি একটি প্রকৃত বাড়ির মধ্যে পার্থক্যের মতো — একটি পরিকল্পনা, যেকোনো সংখ্যক প্রকৃত বাড়ি।
<?php
class Student {
public $name;
public $course;
public function introduce() {
return "Hi, I'm {$this->name}, studying {$this->course}.";
}
}
$student1 = new Student();
$student1->name = "Priya";
$student1->course = "Web Development";
echo $student1->introduce(); // "Hi, I'm Priya, studying Web Development."
?>একটি প্রপার্টি হলো একটি অবজেক্টের নিজস্ব ভ্যারিয়েবল (উপরের $name, $course); একটি মেথড হলো একটি অবজেক্টের নিজস্ব ফাংশন (introduce())। -> অ্যারো ক্লাসের বাইরে থেকে দুটোই অ্যাক্সেস করে, আর $this-> একটি মেথডের ভেতর থেকে এগুলো অ্যাক্সেস করে।
একটি ক্লাস থেকে তৈরি প্রতিটি অবজেক্টের প্রতিটি প্রপার্টির নিজস্ব আলাদা কপি থাকে — একটি অবজেক্ট বদলালে আরেকটি কখনো প্রভাবিত হয় না:
<?php
$student2 = new Student();
$student2->name = "Amit";
$student2->course = "Graphic Design";
echo $student1->name; // still "Priya" — unaffected by $student2
echo $student2->name; // "Amit"
?>আরও কিছু সাথে সাথেই আসছে
পরের পাঠ সরাসরি এটার উপর ভিত্তি করে তৈরি, যোগ করবে constructor (স্বয়ংক্রিয়ভাবে একটি অবজেক্টের শুরুর অবস্থা সেট করা), inheritance (একটি ক্লাস আরেকটির উপর ভিত্তি করে তৈরি), আর visibility (একটি ক্লাসের বাইরে থেকে কী অ্যাক্সেসযোগ্য তা নিয়ন্ত্রণ করা)।