PHP চিট শিট
একটি অনুসন্ধানযোগ্য, প্রিন্টযোগ্য PHP 8.3+ রেফারেন্স — সিনট্যাক্স, স্ট্রিং, অ্যারে, ফাংশন, ক্লাস, enum, অ্যাট্রিবিউট এবং আধুনিক ফিচার। বিনামূল্যে।
মৌলিক ও টাইপ
10declare(strict_types=1);
কঠোর scalar টাইপ যাচাই বলবৎ
$x = 1;
ভেরিয়েবল ডলার চিহ্ন দিয়ে শুরু
const MAX = 100;
Compile-time const
gettype($x)
মানের টাইপ পাওয়া
(int) $x
integer-এ cast
is_int($x)
টাইপ যাচাই হেল্পার (is_string, ...)
int|string $x
Union টাইপ ঘোষণা
?string $x
Nullable টাইপ (string বা null)
$a ?? 'default'
Null coalescing অপারেটর
$a ??= 'default'
শুধু null হলে অ্যাসাইন
স্ট্রিং
11"Hello $name"
ডবল কোট ভেরিয়েবল interpolate করে
'literal $x'
একক কোট আক্ষরিক
$a . $b
স্ট্রিং জোড়া
strlen($s)
স্ট্রিংয়ের byte দৈর্ঘ্য
str_contains($s, 'a')
substring আছে কিনা যাচাই
str_starts_with($s, 'a')
prefix যাচাই
substr($s, 0, 3)
স্ট্রিংয়ের অংশ বের করা
str_replace('a', 'b', $s)
সব উপস্থিতি প্রতিস্থাপন
explode(',', $s)
Array-তে ভাগ করা
sprintf('%05.2f', $n)
ফরম্যাটেড স্ট্রিং আউটপুট
trim($s)
চারপাশের whitespace ছাঁটাই
Array
11$a = [1, 2, 3];
Indexed array literal
$a = ['k' => 'v'];
Associative array
array_map(fn($x) => $x * 2, $a)
প্রতিটি উপাদান রূপান্তর
array_filter($a, fn($x) => $x > 0)
মিলযুক্ত উপাদান রাখা
array_reduce($a, $fn, 0)
একটি মানে reduce করা
in_array($v, $a, true)
কঠোর মান যাচাই
array_keys($a)
সব key পাওয়া
array_merge($a, $b)
Array মার্জ
[...$a, ...$b]
Array spread/মার্জ
count($a)
উপাদানের সংখ্যা
[$x, $y] = $a;
Array destructuring
ফাংশন
9function f(int $a): int {}
টাইপড প্যারামিটার ও return
function f(int $a = 1) {}
ডিফল্ট প্যারামিটার মান
function f(int ...$nums) {}
Variadic প্যারামিটার
f(...$args)
Arguments spread
f(name: 'Sam', age: 30)
নামযুক্ত arguments
$fn = fn($x) => $x + 1;
Arrow function (স্কোপ স্বয়ং-ধারণ)
function () use ($x) {}
ভেরিয়েবল ধারণকারী closure
$fn = strlen(...);
First-class callable সিনট্যাক্স
function f(): never {}
কখনো return করে না (throw বা exit)
কন্ট্রোল ফ্লো
9if ($a) {} elseif ($b) {} else {}
শর্তাধীন শাখা
$a ? $b : $c
Ternary এক্সপ্রেশন
$a ?: $b
সংক্ষিপ্ত ternary (falsy fallback)
match ($x) { 1, 2 => 'a', default => 'b' }
কঠোর, এক্সপ্রেশন-ভিত্তিক match
switch ($x) { case 1: break; }
শিথিল বহু-পথ শাখা
foreach ($a as $k => $v) {}
key ও মান iterate
for ($i = 0; $i < 10; $i++) {}
গণনাকৃত loop
while ($cond) {}
শর্ত বহাল থাকা পর্যন্ত loop
break / continue
loop থেকে বের বা iteration বাদ
Class ও OOP
10class A extends B implements C {}
উত্তরাধিকার ও interface
public function __construct(private int $id) {}
Constructor property promotion
public readonly string $name;
ইনিশিয়ালাইজেশনের পর immutable
public function f(): static {}
Late-bound টাইপ ফেরত
static::create()
Late static binding
$obj?->method()
Null-safe মেথড কল
abstract class A {}
সরাসরি instantiate করা যায় না
trait T {} use T;
পুনঃব্যবহারযোগ্য horizontal কোড
$obj instanceof A
runtime-এ টাইপ যাচাই
A::class
পূর্ণ-যোগ্য class নাম স্ট্রিং
Enum
9enum Status { case Active; case Draft; }
বিশুদ্ধ enumeration
enum Status: string { case A = 'a'; }
Backed enum (string/int)
Status::Active
enum case রেফারেন্স
Status::from('a')
backing মান থেকে তৈরি
Status::tryFrom('x')
অবৈধ হলে null ফেরত
Status::cases()
সব case-এর array
$status->value
case-এর backing মান
$status->name
case-এর নাম
enum E { public function label() {} }
Enum-এ মেথড থাকতে পারে
এরর হ্যান্ডলিং
9try {} catch (Throwable $e) {}
error ও exception ধরা
catch (TypeError | ValueError $e)
একাধিক টাইপ ধরা
catch (Exception)
Non-capturing catch (ভেরিয়েবল ছাড়া)
finally {}
try/catch-এর পর সবসময় চলে
throw new RuntimeException('x')
exception throw
throw $e;
ধরা exception পুনঃthrow
$x = $v ?? throw new Error();
এক্সপ্রেশন হিসেবে throw
$e->getMessage()
এরর বার্তা পড়া
$e->getPrevious()
চেইনড exception পাওয়া
Attribute ও আধুনিক
9#[Attribute] class Route {}
কাস্টম attribute ঘোষণা
#[Route('/home')]
target-এ attribute প্রয়োগ
new ReflectionClass($x)
reflection দিয়ে class পরিদর্শন
$ref->getAttributes()
ঘোষিত attribute পড়া
json_encode($data)
JSON-এ serialize
json_decode($s, true)
JSON-কে array-তে decode
array_is_list($a)
key ক্রমে 0..n হলে true
str_word_count($s)
স্ট্রিংয়ে শব্দ গণনা
$obj::class
instance থেকে class নাম
“:q”-এর সাথে কোনো এন্ট্রি মেলে না।
সাহায্য দরকার?
এই টুলে কোনো সমস্যা পেয়েছেন? আমাদের দলকে জানান।