থেকে ট্রিহাউস ব্লগ :
পিএইচপি 7 সহ আমরা এখন স্কেলারের প্রকারগুলি যুক্ত করেছি। বিশেষত: ইনট, ফ্লোট, স্ট্রিং এবং বুল,
স্কেলারের ধরণের ইঙ্গিতগুলি যুক্ত করে এবং কঠোর প্রয়োজনীয়তা সক্ষম করে, আশা করা যায় যে আরও সঠিক এবং স্ব-ডকুমেন্টিং পিএইচপি প্রোগ্রামগুলি লেখা যেতে পারে। এটি আপনাকে আপনার কোডের উপর আরও নিয়ন্ত্রণ দেয় এবং কোডটি পড়া সহজ করে তোলে।
ডিফল্টরূপে, স্কেলার টাইপ-ডিক্লেয়ারেশনগুলি অ-কঠোর, যার অর্থ তারা টাইপ-ডিক্লেয়ারেশন দ্বারা নির্দিষ্ট ধরণের সাথে মেলে মূল প্রকারটি পরিবর্তনের চেষ্টা করবে। অন্য কথায়, আপনি যদি কোনও স্ট্রিং পাস করেন যা একটি নম্বর দিয়ে শুরু করে এমন একটি ফাংশনে যা ভাসমানের প্রয়োজন হয়, এটি শুরু থেকে নম্বরটি ধরে ফেলবে এবং সমস্ত কিছু সরিয়ে ফেলবে। কোনও ক্রিয়াকলাপের জন্য একটি ভাসমান স্থানটি প্রবেশ করানো হবে যার জন্য কোনও int প্রয়োজন হবে (1) int
ডিফল্টরূপে, পিএইচপি সম্ভব হলে প্রত্যাশিত স্কেলারের প্রকারে ভুল ধরণের মানগুলি ফেলে দেবে। উদাহরণস্বরূপ, কোনও ফাংশন যা পরামিতিটির জন্য একটি পূর্ণসংখ্যা দেওয়া হয় যা স্ট্রিংটি প্রত্যাশা করে যে টাইপ স্ট্রিংয়ের একটি ভেরিয়েবল পাবে।
কঠোর প্রকারগুলি অক্ষম করা হয়েছে ( স্পষ্ট ):
<?php
function AddIntAndFloat(int $a, float $b) : int
{
return $a + $b;
}
echo AddIntAndFloat(1.4, '2');
/*
* without strict typing, PHP will change float(1.4) to int(1)
* and string('2') to float(2.0) and returns int(3)
*/
প্রতি ফাইলের ভিত্তিতে কঠোর মোড সক্ষম করা সম্ভব। কঠোর মোডে, প্রকারের ঘোষণার ধরণের সঠিক ধরণের কেবল একটি পরিবর্তনীয় গ্রহণ করা হবে, বা কোনও টাইপ এরির নিক্ষেপ করা হবে। এই নিয়মের একমাত্র ব্যতিক্রম হ'ল কোনও ফ্লোট প্রত্যাশা করে কোনও ক্রিয়াকলাপ দেওয়া যেতে পারে। অভ্যন্তরীণ ফাংশনগুলির মধ্যে থেকে ফাংশন কলগুলি কঠোর_ টাইপ ঘোষণার দ্বারা প্রভাবিত হবে না।
কঠোর মোড সক্ষম করতে, ঘোষিত বিবৃতিটি কঠোর_প্রকারের ঘোষণার সাথে ব্যবহৃত হয়:
কঠোর প্রকারগুলি সক্ষম ( ইওল ):
<?php declare(strict_types=1);
function AddIntAndFloat(int $a, float $b): int
{
return (string) $a + $b;
}
echo AddIntAndFloat(1.4,'2');
// Fatal error: Uncaught TypeError: Argument 1 passed to AddIntAndFloat() must be of the type int, float given
echo AddIntAndFloat(1,'2');
// Fatal error: Uncaught TypeError: Argument 2 passed to AddIntAndFloat() must be of the type float, string given
// Integers can be passed as float-points :
echo AddIntAndFloat(1,1);
// Fatal error: Uncaught TypeError: Return value of AddIntAndFloat() must be of the type integer, string returned
কাজের উদাহরণ:
<?php
declare(strict_types=1);
function AddFloats(float $a, float $b) : float
{
return $a+$b;
}
$float = AddFloats(1.5,2.0); // Returns 3.5
function AddFloatsReturnInt(float $a, float $b) : int
{
return (int) $a+$b;
}
$int = AddFloatsReturnInt($float,1.5); // Returns 5
function Say(string $message): void // As in PHP 7.2
{
echo $message;
}
Say('Hello, World!'); // Prints "Hello, World!"
function ArrayToStdClass(array $array): stdClass
{
return (object) $array;
}
$object = ArrayToStdClass(['name' => 'azjezz','age' => 100]); // returns an stdClass
function StdClassToArray(stdClass $object): array
{
return (array) $object;
}
$array = StdClassToArray($object); // Returns array
function ArrayToObject(array $array): object // As of PHP 7.2
{
return new ArrayObject($array);
}
function ObjectToArray(ArrayObject $object): array
{
return $object->getArrayCopy();
}
var_dump( ObjectToArray( ArrayToObject( [1 => 'a' ] ) ) ); // array(1 => 'a');