Attributes এক ধরনের ক্লাস যা অন্যান্য ক্লাস, ফাংশন, ক্লাস মেথড, ক্লাস প্রোপার্টি, কনস্ট্যান্ট, এবং প্যারামিটারে মেটাডেটা যোগ করতে ব্যবহার করা যেতে পারে। Attributes রানটাইমে কিছুই করে না।
Attributes কোডে কোনো প্রভাব ফেলে না, কিন্তু রিফ্লেকশন API-র জন্য উপলব্ধ থাকে। PHP 8-এ Attributes অন্য কোডকে ক্লাস প্রোপার্টি এবং মেথড পরীক্ষা করতে দেয়।
আমরা একটি ডিক্লেরেশনে একাধিক attribute রাখতে পারি।
এটি ক্লাস নাম রেজল্ভ করতে পারে।
Attributes নেমস্পেসড হতে পারে।
এতে শূন্য বা অধিক প্যারামিটার থাকতে পারে
PHP 8 Attribute সিনট্যাক্স
PHP 8-এ, #[ ] (# এবং স্কোয়ার ব্র্যাকেট) attribute ডিক্লেরেশনের জন্য ব্যবহৃত হয়।
আমরা #[ ] ভিতরে কমা দিয়ে আলাদা করে একাধিক attribute ডিক্লের করতে পারি।
আর্গুমেন্ট ব্যবহার করা ঐচ্ছিক কিন্তু প্যারেনথেসিস () এর ভিতরে থাকতে হবে।
আর্গুমেন্ট লিটারেল ভ্যালু বা কনস্ট্যান্ট এক্সপ্রেশন হতে পারে।
Attribute: সিনট্যাক্স
#[attribute]
আমরা একটি ক্লাসে attribute ব্যবহার করতে পারি উদাহরণস্বরূপ।
#[Attribute] Final class EmpClass{ }উদাহরণ: Attribute Function
#[Attr('param')] function Exam(){}উদাহরণ: Attribute Classes
#[Attr('param')] class Exam{}উদাহরণ: Attribute Class Properties
class Emp{ #[Attribute('param')] public $name; }উদাহরণ: Attribute Class Constants
Class Emp{ #[Attribute('emp')] private const EMP = 'emp'; }উদাহরণ: Attribute Function
#[Attribute('emp')] function exam(){}উদাহরণ: Attribute Method Arguments
Function emp(#[Attribute('param')]$name){ }উদাহরণ: PHP 8 Attribute ফাংশন, মেথড, প্যারামিটার এবং কনস্ট্যান্ট ব্যবহার করে
<?php #[MyAttribute] class Emp { #[MyAttribute] public const EMP = 'emp'; #[MyAttribute] public $a; #[MyAttribute] public function foo(#[MyAttribute] $dept){} } $object = new #[MyAttribute] class(){}; #[MyAttribute] function f() {} $f1 = #[MyAttribute] function(){}; $f2 = #[MyAttribute] fn() => 1; print_r($f1); ?>আউটপুট
Closure Object ( )