PHP Object Oriented Programming
Object কি?
আমরা আমাদের চার পাশে যা কিছু দেখি তার সবই Object বা বস্তু। এই ধরুন আপনি আপনার নিজেকে এবং আপনার আসে-পাশের দিকে খেয়াল করুন , আপনার গায়ের জামা, আপনার পরনের প্যান্ট, হাতের মোবাইল, পড়ার টেবিল,বসার চেয়ার ,কম্পিউটার এই সবই একেকটি Object বা বস্তু। এমনকি আপনি / আমি নিজেও একটা Object.
class কি?
Object সম্পর্কে তো জানা হলো , চলুন এবার জানি class কি? class হচ্ছে Object এর replica (অবিকল প্রতিরুপ) বা blueprint (নীলনকশা)। ধরুন আমরা একটি চেয়ার বানাতে চাই, শুরুতে আমরা কোন রকম চিন্তা ভাবনা না করে ফু দিয়ে একটা চেয়ার বানিয়ে ফেলতে পারি না। আমরা এর জন্যে পরিকল্পনা করি- চেয়ারটা দেখতে কেমন হবে, এটি দৈর্ঘ্য, প্রস্থ এবং উচ্চতা কতটুকু হবে, চেয়ারটি কি কি কাজ করবে ইত্যাদি। এই পরিকল্পনা গুলো আমরা আমরা কোথাও লিখে রাখি। আমাদের এই লেখা ডকুমেন্টটি আসলে class. আরেকটু ব্যাখ্যা করে বলতে গেলে আমরা বলতে পারি যে একটা অবজেক্ট কেমন হবে তা যেখানে নির্ধারণ করা থাকে তার নাম class।
এই ক্লাস দিয়ে তৈরি অবজেক্টকে ঐ ক্লাসের অস্তিত্ব(Instance)
বলে।
PHP OOP Basics
PHP OOP Basics: Object Oriented Programming কি?
এখন প্রশ্ন হল, তাহলে PHPP (OOP) Object Oriented Programming কি? Computer Programming এ class এবং Object এর ধারণাকে কাজে লাগিয়ে যে Programming করা হয় তাকেই বলা হয় PHP (OOP) Object Oriented Programming। অবজেক্ট ওরিয়েন্ট কনসেপ্ট তিনটি ধারণার উপর প্রতিষ্ঠিত:
• Inheritance-ইংরেজি শব্দ inheritance অর্থ হচ্ছে উত্তরাধিকার। Object Oriented Programming এ এক class থেকে কিছু ফাংশনালিটি (Methods) ও বৈশিষ্ট্য (Property) অন্য class এ শেয়ার করার একটা পদ্ধতি হচ্ছে Inheritance. বা কোন Class বা Object এ অন্য কোন Class বা Object এর বৈশিষ্ট্য অর্জন করে থাকে যে প্রক্রিয়ায় তাকে উত্তরাধিকার সূত্র বা Inheritance বলে। আরো সহজ ভাবে বলা যায় , একটা ক্লাসকে (Parent Class) Inherit (অনুসরণ) করে তার কিছু বৈশিষ্ট্য আরেকটি উত্তরসূরি (child class) এর মধ্যে ব্যবহার করার প্রক্রিয়াকে Inheritance বলা হয়।
• encapsulation-অর্থাৎ সব কিছু encapsulate অবস্থায় থাকা। অনেকটা ক্যাপসুল মেডিসিন এর মতোই , যেভাবে একটা capsule এর বাইরে একটা আবরণ দিয়ে সব কিছু ভেতরে আটকানো থাকে । একই ভাবে Object Oriented Programming এ একটা class এর আবরণ দিয়ে সব কিছু ভেতরে আটকানো থাকে।
• polymorphism – বহুরূপিতা। অর্থাৎ একটা অবজেক্ট নানা সময় নানা রকম রূপ ধারণ করতে পারে বা বহুরূপে ব্যবহৃত হতে পারে।
PHP OOP Basics
• Parent Class: একটি class থেকে যখন অন্য একটা class inherits বা উত্তরাধিকার সূত্রে তৈরী হয় , তখন যেই class থেকে নতুন class টি তৈরী হয়, তাকে Parent class বলা হয়। Parent class কে base class বা super class ও বলে।
• Child Class:একটি class যখন অন্য একটা class থেকে inherits বা উত্তরাধিকার সূত্রে তৈরী হয় , তখন তাকে child class বলা হয়। child class কে subclass বা derived class ও বলে।
• Visibility/Access
modifier:
ইংরেজি শব্দ visibility
অর্থ দৃশ্যমানতা, অর্থাৎ class
এর মধ্যে যেকোনো property,constant
অথবা Method
এ কে access
পাবে তা visibility
দিয়ে নির্ধারিত হয়। Visibility
গুলো সাধারণত class
এর মধ্যে constant,property,
method এর আগে ঘোষণা করতে হয়।
PHP তে Visibility তিন ধরনের:
• private :Class এর মধ্যে constant, property, method গুলোকে যদি শুধু একই class বা class নিজের মধ্যে ব্যবহার সীমিত রাখতে চাই , তাহলে সেইসব constant, property, method গুলোকে private ঘোষণা করতে হয়।
• protected: Class এর মধ্যে constant, property, method গুলোকে যদি শুধু একই class বা class নিজের মধ্যে এবং তার child class এর মধ্যে ব্যবহার সীমিত রাখতে চাই , তাহলে সেইসব constant, property, method গুলোকে protected ঘোষণা করতে হয়।
• public: Class
এর মধ্যে constant,
property, method গুলোকে যদি একই class বা class নিজের মধ্যে , child class এবং class
এর বাহির থেকে ব্যবহার রাখতে চাই , তাহলে সেইসব constant,
property, method গুলোকে public ঘোষণা করতে হয়।
PHP OOP Basics
• Property: PHP OOP তে class এর মধ্যে অবস্থিত variable গুলিকে Property বলা হয়। Property গুলোকে “attributes” বা “fields” নামেও ডাকা হয়।PHP তে Property গুলোকে যেকোনো একটা visibility অর্থাৎ : public, private, protected এর যেকোনো একটি visibility সহ ডিফাইন করতে হয়।
• Method: PHP তে class এর মধ্যে অবস্থিত function গুলিকে Method বলা হয়। PHP তে Method গুলোকে যেকোনো একটা visibility অর্থাৎ : public, private, protected এর যেকোনো একটি visibility সহ declare বা ঘোষণা করতে হয়।
• static keyword: class এর যেকোনো property এবং method এ কোন রকম instance বা object ছাড়া access করার সুযোগ দিতে চাইলে বা সরাসরি class দিয়ে access করার সুযোগ দিতে চাইলে static keyword ব্যবহৃত হয়।
• “::” scope resolution operator PHP তে class এর মধ্যে অবস্থিত যেকোনো static property, static method এবং constant কে class এর ভিতরে অথবা বাহিরে যেকোনো কাজে ব্যবহার করতে চাইলে “:: scope resolution operator” ব্যবহার করতে হয়।
• “$this” pseudo-variable: “$this” pseudo-variable টি মূলত current class এর object কে ধারণ করে। PHP তে class এর মধ্যে অবস্থিত যেকোনো Non-static property এবং Non-static method কে class এর মধ্যেই যেকোনো কাজে ব্যবহার করতে চাইলে “$this” pseudo-variable ব্যবহার করতে হয়।
PHP তে class declare বা ঘোষণা করার নিয়ম
PHP তে “class” keyword এর পর letter অথবা underscore দিয়ে class name শুরু করতে হয়। class name এর পর curly braces দিয়ে class শুরু করতে হয়, এবং curly braces দিয়ে class শেষ করতে। curly braces এর ভিতরের অংশকে বলা হয় class body . class name হিসাবে PHP এর reserved word দেওয়া যাবেনা।
<?php
class SimpleClass // class Declaration
{ //class start
/*..........
Class Body
.........*/
} //class end
?>
PHP তে class থেকে object
তৈরির নিয়ম কি?
PHP তে class থেকে অবজেক্ট তৈরী করতে হলে class এর বাহিরে class এর নামের পূর্বে new keyword দিতে হয়। অর্থাৎ new className অথবা new className(). আর object কে যেই variable এ রাখা হয় তাকে object handler বলা হয়।
<?php
class SimpleClass
{ //class start
/*..........
Class Body
.........*/
} //class end
$objHandler=new SimpleClass(); // Object Call
?>
PHP তে class এর মধ্যে constant,
property এবং method ঘোষণা করার নিয়ম কি?
PHP তে class এর মধ্যে constant, property এবং method ঘোষণা করতে হলে constant, property এবং method গুলোর নামের পূর্বে আপনার প্রয়োজন অনুসারে যেকোনো একটা visibility দিতে হয়। তবে constant এর বেলায় visibility ঐচ্ছিক বা optional.constant এ কোন visibility ঘোষণা না করলে বাই ডিফল্ট public থাকে।
<?php
class SimpleClass
{
public $var = 'a default value'; // public property declaration
private const a="America"; // private constant Declaration
// public method declaration
public function displayVar() {
echo $this->var;
}
}
?>
PHP তে class এর মধ্যে অবস্থিত property,
method এবং constant ব্যবহারের নিয়ম কি ?
PHP তে class এর মধ্যে অবস্থিত property, method এবং constant গুলো দুইভাবে ব্যবহৃত হতে পারে।
১. class এর বাহিরে।
২. class এর মধ্যে।
property, method এবং constant কে class এর বাহিরে ব্যবহার
object handler বা object variable দিয়ে : PHP তে class এর মধ্যে অবস্থিত যেকোনো public Non-static property এবং public Non-static method কে class এর বাহিরে যেকোনো কাজে ব্যবহার করতে চাইলে সরাসরি object handler বা object variable দিয়ে ব্যবহার করা যায়।
<?php
class SimpleClass
{
// property declaration
public $var = 'Hello Simple Class';
// method declaration
public function displayVar() {
echo $this->var;
}
}
$obj=new SimpleClass;
$obj->displayVar();
/*
access class method using Object Variable $obj
Result: Hello Simple Class
*/
?>
“::” scope resolution operator PHP তে class এর মধ্যে অবস্থিত যেকোনো public static property, public static method এবং public constant কে class এর বাহিরে যেকোনো কাজে ব্যবহার করতে চাইলে “:: scope resolution operator” ব্যবহার করতে হয়।
<?php
class SimpleClass
{
// property declaration
public $var = 'Hello Simple Class';
public const a="America";
// Static method declaration
public static function sayHello() {
echo "Hello World";
}
}
SimpleClass::sayHello();
echo SimpleClass::a;
/*
access class method using directly class name and scope resolution Operator ::
Result: Hello World
*/
?>
property, method এবং constant
কে class এর মধ্যেই ব্যবহার
“$this” pseudo-variable ব্যবহার করে।
<?php
class SimpleClass
{
// property declaration
public $var = 'Hello Simple Class';
// method declaration
public function sayHello() {
echo $this->var; // use $this to show $var value
}
}
$obj=new SimpleClass;
$obj->sayHello(); // Result: Hello Simple Class
?>
“::” scope resolution operator PHP তে class এর মধ্যে অবস্থিত যেকোনো static property, static method এবং constant কে class এর মধ্যেই যেকোনো কাজে ব্যবহার করতে চাইলে “:: scope resolution operator” ব্যবহার করতে হয়।
<?php
class SimpleClass
{
// property declaration
static public $var = 'Hello Simple Class';
const a="America";
// method declaration
public function sayHello() {
echo self::$var; // use self with scope resolution Operator
echo "<br>", self::a;
}
}
$obj=new SimpleClass;
$obj->sayHello();
?>
PHP OOP Method Chaining
PHP তে Method Chaining কি?
PHP তে যখন অনেক গুলো method কে একটি single instruction এর মধ্যে call করা হয়, PHP এর পরিভাষায় একে বলা হয় Method Chaining . আরেকটু সহজ ভাবে বুঝিয়ে বলি, ধরুন আপনার Person নামে একটা class আছে, যেখানে আপনার $name এবং $age নামে দুটি private property আছে। আর $name এবং $age property দুটিতে value set করার জন্য আছে যথাক্রমে setName() এবং setAge() নামক দুটি method. এবং সর্বশেষে $name এবং $age property দুটির value দেখানোর জন্য আছে getInfo() নামক method. এবং ধরুন আমাদের object টির নাম হচ্ছে $person. এখন আমরা যদি এই তিনটি method কে আলাদা আলাদা ভাবে object দিয়ে call না করে একটি single instruction এর মধ্যে ঠিক এইভাবে call করতে চাই : $person->setName(“Sahab Uddin”)->setAge(24)->getInfo(). PHP এর পরিভাষায় এই পদ্ধতিকে বলা হয় Method Chaining . Method Chaining এ class এর মধ্যের প্রত্যেকটি Method অর্থাৎ যেই class এর method সেই class এর object কে return করে। Method Chaining এর জন্য class এর মধ্যে যেকোনো value return এর পরিবর্তে return $this; কথাটি লিখতে হয়।
<?php
class person
{
private $name="";
private $age="";
public function setName($name="")
{
$this->name=$name;
return $this;
}
public function setAge($age="20")
{
$this->age=$age;
return $this;
}
public function getInfo()
{
echo "Hello, My name is ".$this->name." and my age is ".$this->age." years.";
}
}
$person = new person();
$person->setName("Masud Alam")->setAge("33")->getInfo();
?>
ব্যাখ্যা : লক্ষ্য করুন আমরা setName() Method এবং setAge() Method দুটির মধ্যে $this pseudo-variable টি রিটার্ন করি। আর আমরা জানি “$this” pseudo-variable টি মূলত current class এর object কে ধারণ করে। প্রথমে আসা যাক $person->setName(‘Sahab Uddin’) এ . এটির কাজ হচ্ছে setName() Method কে call করবে এবং Name Property তে Masud Alam নামকে value হিসেবে সেট করবে। তারপর setName() মেথড $this রিটার্ন করবে , অর্থাৎ এটি Object person কে রিটার্ন করবে।
এরপরে আশা যাক ->setAge(’24’) তে , যেহেতু আমরা আগের setName() method থেকে chain object পেয়েছি , সুতরাং সেই person object দিয়েই আমরা setAge(24) কে call করা এবং age Property তে 24 age কে value হিসেবে সেট করবে। আবার এখানেও আমরা $this রিটার্ন করায়, একই ভাবে এখানেও মূলত আমাদের Object person কে chain রিটার্ন করবে।
সর্বশেষে ->getInfo() method দিয়ে আমরা পূর্বের ধারাবাহিকতায় chain
রেজাল্ট পাই।
Static Method Chaining
Static Method Chaining সাধারণ Method Chaining এর মতোই। তবে এখানে প্রত্যেকটি static Method এর মধ্যে return $this এর পরিবর্তে return new static; কথাটা লিখতে হবে।
<?php
class oop{
public static $val;
public static function init($var){
static::$val=$var;
return new static;
}
public static function add($var){
static::$val+=$var;
return new static;
}
public static function sub($var){
static::$val-=$var;
return new static;
}
public static function out(){
return static::$val;
}
}
echo oop::init(10)->add(2)->sub(5)->out(); //Result: 10+2-5=7
echo "<br>";
echo oop::sub(2)->out(); //Result: 7-2=5;
PHP তে Constructor Method কি?
Class থেকে নতুন কোনো object তৈরী হওয়ার সময় যে মেথড স্বয়ংক্রিয় ভাবে এবং সবার আগে execute হয়, PHP তে তাকে constructor Method বলে। PHP তে Constructor Method একটি PHP Language কর্তৃক Pre-defined Public Method অর্থাৎ PHP language কর্তৃক পূর্ব নির্ধারিত Public Method , যা public function এর পর একসাথে দুইবার underscore (__) দেওয়ার পর construct কথাটি লিখতে হয় অর্থাৎ public function __construct() নাম দিয়ে লিখতে হয়।
<?php
class oop{
public function __construct(){
echo "Welcome to PHP World!";
}
public function sayHello(){
echo "Hello World";
}
}
$obj=new oop; /* Now Automatically Execute __construct Method
And Will show "Welcome to PHP World " First.*/
echo "<br>";
$obj->sayHello(); // Result: Hello World
?>
যদি কোনো class এর Constructor Method এ Parameter দেওয়া থাকে, তাহলে সেই Constructor Method এ Argument পাঠাতে হলে class object এর সাথে parenthesis “( )” দিয়ে আর্গুমেনট পাঠাতে হবে।
class Car {
private $model;
//__construct
public function __construct ($model)
{
$this -> model = $model;
}
public function getCarModel()
{
return ' The car model is: ' . $this -> model;
}
}
//We pass the value of the variable once we create the object
$car1 = new Car("Mercedes"); // Passing Argument to Constructor Parameter
echo $car1 -> getCarModel();
PHP তে Destructor Method কি?
Object এর কাজ শেষ হওয়ার সময় class এর মধ্যে যে মেথড স্বয়ংক্রিয় ভাবে execute হয় বা সবার শেষে execute হয়, PHP তে তাকে Destructor Method বলে। PHP তে Destructor Method একটি PHP Language কর্তৃক Pre-defined Public Method অর্থাৎ PHP language কর্তৃক পূর্ব নির্ধারিত Public Method , যা public function এর পর একসাথে দুইবার underscore (__) দেওয়ার পর destruct কথাটি লিখতে হয় অর্থাৎ public function __destruct() নাম দিয়ে লিখতে হয়।
<?php
class oop{
public function __construct(){
echo "Welcome to PHP World!";
}
public function sayHello(){
echo "Hello World";
}
public function __destruct(){
echo "<br>I'm about to disappear - bye bye!";
}
}
$obj=new oop;
echo "<br>";
$obj->sayHello();
?>
PHP তে Destructor Method কোনো argument
receive করতে পারে ?
না পারেনা এবং সেটার দরকার ও নাই। তবে অন্য যেকোনো method দিয়ে Argument Receive করে যেকোনো property তে রেখে সেই property কে constructor Method দিয়ে রিটার্ন করতে পারবেন।
PHP তে Destructor Method কেন ব্যবহার করবো?
কোনো কিছু fininshing বা শেষ করতে চাইলে destructor Method ব্যবহার করা হয়, যেমন : file closing, Database Connection closing এবং Session Destroy এর মতো কাজগুলো Destructor Method দিয়ে করা হয়।
<?php
class oop{
private $name;
public function __construct($val){
return $this->name=$val;
}
public function sayHello(){
echo "Hello World";
}
public function __destruct(){
echo "<br>Bye bye $this->name!";
}
}
$obj=new oop("Imran");
echo "<br>";
$obj->sayHello();
?>



0 Comments