ক্লাস হলো PHP-তে কোড সংগঠনের একটি একক। কোনো বস্তুর আচরণ বা কোনো প্রক্রিয়ার আচরণ প্রকাশ করে এমন কোডকে একটি ক্লাস হিসেবে একসাথে গোষ্ঠীভুক্ত করা যায়। কোনো ক্লাসের সাথে যুক্ত করা ফাংশনগুলোকে প্রচলিতভাবে methods বলা হয়।
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
ক্লাস ইন্সট্যান্টিয়েট করা হয় new কিওয়ার্ড দিয়ে; এটি ক্লাস ইন্সট্যান্সের জন্য মেমোরি অ্যালোকেট করে এবং ক্লাসের কনস্ট্রাক্টর মেথড কল করে। ইন্সট্যান্টিয়েট করা ক্লাস একটি ভ্যারিয়েবলে অ্যাসাইন করা যায়। ক্লাস ইন্সট্যান্সের মেথডগুলো কল করার জন্য আমরা -> অ্যাকসেস অপারেটর ব্যবহার করতে পারি।
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
ইন্সট্যান্টিয়েট করা একটি ক্লাস বিশেষ $this ভ্যারিয়েবল ব্যবহার করে তার নিজের ইন্সট্যান্সকে রেফার করতে পারে। ক্লাসে প্রপার্টিও থাকতে পারে; এগুলো ক্লাস অবজেক্টের ইন্সট্যান্সের সাথে বাঁধা ভ্যারিয়েবলের মতো কাজ করে। এই প্রপার্টিগুলো অভ্যন্তরীণভাবে বা বাহ্যিকভাবে রেফার করা যায়।
<?php
class Car
{
public $color;
function __construct($color)
{
$this->color = $color;
}
function getColor()
{
return $this->color;
}
}
$a_car = new Car("red");
$a_car->color; // => "red" by accessing the property
$a_car->getColor(); // => "red" by invoking the instance method
এই অনুশীলনীতে আপনি একটি উইন্ডো-ভিত্তিক কম্পিউটার সিস্টেম সিমুলেট করবেন। আপনি এমন কিছু উইন্ডো তৈরি করবেন যা সরানো যায় এবং রিসাইজ করা যায়। নিচের ছবিটি নিচে আপনি যে মানগুলো নিয়ে কাজ করবেন তার একটি প্রতিনিধিত্ব করে।
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
প্রদত্ত ক্লাস স্ক্যাফোল্ড ব্যবহার করে y, x, height ও width মানগুলোর জন্য প্রপার্টিগুলো দিন।
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
ProgramWindow-এর জন্য একটি কনস্ট্রাক্টর ফাংশন ডিফাইন করুন।
এটি কোনো আর্গুমেন্ট নেবে না, তবে কনস্ট্রাক্টরটি চলার সময় এর প্রপার্টিগুলোর ডিফল্ট মান সেট করবে।
এটি প্রাথমিক y ও x মান 0 হিসেবে সেট করবে।
এটি প্রাথমিক height ও width মান একটি 600x800 স্ক্রিন সাইজ হিসেবে সেট করবে।
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
একটি Size ক্লাসের জন্য Size.php ফাইলে একটি নতুন ক্লাস ডিফাইন করুন।
এটি height ও width প্রপার্টি সেট করার জন্য কনস্ট্রাক্টর আর্গুমেন্ট নেবে।
এছাড়াও ProgramWindow-এর একটি রিসাইজ ফাংশন প্রয়োজন, যা Size অবজেক্ট ইনস্ট্যান্স গ্রহণ করে এবং নিজের প্রপার্টিগুলো আপডেট করে।
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
একটি Position ক্লাসের জন্য Position.php ফাইলে একটি নতুন ক্লাস ডিফাইন করুন।
এটি y ও x প্রপার্টি সেট করার জন্য কনস্ট্রাক্টর আর্গুমেন্ট নেবে।
এছাড়াও ProgramWindow-এর একটি সরানোর ফাংশন প্রয়োজন, যা Position অবজেক্ট ইনস্ট্যান্স গ্রহণ করে এবং নিজের প্রপার্টিগুলো আপডেট করে।
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Exercism-এ সাইন আপ করুন, PHP ট্র্যাকের 11টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।