রেফারেন্স - এই চিহ্নটি পিএইচপি এর অর্থ কী?


4475

এটা কি?

এটি এমন প্রশ্নের সংকলন যা পিএইচপি-তে সিনট্যাক্স সম্পর্কে এখনই আসে। এটি একটি সম্প্রদায় উইকিও তাই প্রত্যেককে এই তালিকা বজায় রাখতে অংশ নিতে আমন্ত্রিত করা হয়।

কেন?

অপারেটর এবং অন্যান্য সিনট্যাক্স টোকেন সম্পর্কে প্রশ্নগুলি খুঁজে পাওয়া শক্ত ছিল ¹
মূল ধারণাটি স্ট্যাক ওভারফ্লোতে বিদ্যমান প্রশ্নের লিঙ্ক থাকা আমাদের পক্ষে পিএইচপি ম্যানুয়াল থেকে বিষয়বস্তু অনুলিপি না করে তাদের রেফারেন্স করা সহজ easier

দ্রষ্টব্য: জানুয়ারী ২০১৩ সাল থেকে স্ট্যাক ওভারফ্লো বিশেষ চরিত্রগুলিকে সমর্থন করে । উদ্ধৃতি দ্বারা সন্ধানের শব্দগুলি ঘিরে রাখুন, উদাহরণস্বরূপ[php] "==" vs "==="

আমার এখানে কি করা উচিত?

আপনি যদি এ জাতীয় প্রশ্ন জিজ্ঞাসা করেছেন বলে কারও দ্বারা এখানে নির্দেশ করা হয়েছে, দয়া করে নীচে নির্দিষ্ট বাক্য গঠনটি সন্ধান করুন। লিঙ্কিত প্রশ্নগুলির সাথে পিএইচপি ম্যানুয়ালটিতে লিঙ্কযুক্ত পৃষ্ঠাগুলি সম্ভবত আপনার প্রশ্নের উত্তর দেবে। যদি তা হয় তবে আপনাকে উত্তরটি উত্তোলন করতে উত্সাহিত করা হবে। এই তালিকাটি অন্যদের সরবরাহিত সহায়তার বিকল্প হিসাবে নয়।

ক্রমতালিকা

যদি আপনার নির্দিষ্ট টোকেনটি নীচে তালিকাভুক্ত না হয় তবে আপনি এটি পার্সার টোকেনের তালিকায় খুঁজে পেতে পারেন ।


& বিটওয়াইজ অপারেটর বা রেফারেন্স


=& তথ্যসূত্র


&= বিটওয়াইস অপারেটর


&& লজিক্যাল অপারেটর


% পাটিগণিত অপারেটর


!! লজিক্যাল অপারেটর


@ ত্রুটি নিয়ন্ত্রণ অপারেটর


?: টার্নারি অপারেটর


?? নাল কোলেসেস অপারেটর (পিএইচপি 7 সাল থেকে)


?string ?int ?array ?bool ?float নুলযোগ্য রিটার্নের প্রকারের ঘোষণা (পিএইচপি .1.১ থেকে)


: নিয়ন্ত্রণ কাঠামোর জন্য বিকল্প বাক্য গঠন , টার্নারি অপারেটর


:: স্কোপ রেজোলিউশন অপারেটর


\ নামস্থান


-> ক্লাস এবং অবজেক্টস


=> অ্যারেগুলির


^ বিটওয়াইস অপারেটর


>> বিটওয়াইস অপারেটর


<< বিটওয়াইস অপারেটর


<<< হেরাদোক বা নওডোক


= অ্যাসাইনমেন্ট অপারেটর


== তুলনা অপারেটর


=== তুলনা অপারেটর


!== তুলনা অপারেটর


!= তুলনা অপারেটর


<> তুলনা অপারেটর


<=> তুলনা অপারেটর (পিএইচপি 7.0 থেকে)


| বিটওয়াইস অপারেটর


|| লজিক্যাল অপারেটর


~ বিটওয়াইস অপারেটর


+ পাটিগণিত অপারেটর , অ্যারে অপারেটর


+=এবং -= অ্যাসাইনমেন্ট অপারেটরগণ


++এবং -- বাড়ানো / অপারেটর হ্রাস


.= অ্যাসাইনমেন্ট অপারেটর


. স্ট্রিং অপারেটর


, ফাংশন যুক্তি

, পরিবর্তনশীল ঘোষণা


$$ পরিবর্তনশীল পরিবর্তনশীল


` এক্সিকিউশন অপারেটর


<?= শর্ট ওপেন ট্যাগস


[] অ্যারে (পিএইচপি 5.4-র সংক্ষিপ্ত বাক্য গঠন)


<? ট্যাগগুলি খোলার এবং সমাপ্তি


... যুক্তি আনপ্যাক করা হচ্ছে (পিএইচপি 5.6 সাল থেকে)


** ক্ষয়ক্ষতি (পিএইচপি 5.6 সাল থেকে)


# এক-লাইনের শেল-স্টাইল মন্তব্য


:? পিছনে ফেরত প্রকারের



36
আমি জানি এটি কঠোরভাবে পিএইচপি নয়, তবে পিএইচপিডিউকোয়েন্টার মন্তব্য সংশ্লেষের জন্য phpdoc.org এর লিঙ্ক অন্তর্ভুক্ত করার বিষয়ে, যা সাধারণত ব্যবহৃত হয় এবং এটি অনুসন্ধান করাও অসম্ভব /**?
মাইক

8
আমি কি বর্গাকার বন্ধনী এবং কোঁকড়া বন্ধনী প্রস্তাব করতে পারি?
আজরিয়াল

124
আমি এই সমস্যার মধ্যেও অনেকটা দৌড়েছি (বিশেষ চরিত্রগুলির সন্ধান করতে সক্ষম হচ্ছি না), এজন্যই আমি সিম্বলহাউন্ড তৈরি করেছি , এমন একটি অনুসন্ধান ইঞ্জিন যা বিশেষ চরিত্রগুলি উপেক্ষা করে না। আমি এটি স্ট্যাক অ্যাপসেও পোস্ট করেছি ।
dncrane

1
ঠিক আছে, শিরোনাম থেকে এটি কেন? , আমি অনুমান করলাম কারণ এটি "স্ট্যাক ওভারফ্লোতে বিদ্যমান প্রশ্নগুলির লিঙ্ক থাকা মূল ধারণাটি, সুতরাং সেগুলি উল্লেখ করা আমাদের পক্ষে সহজ"।
হারবার্ট

3
একটি প্রশ্ন আজ (Nov.20 / 15) জিজ্ঞাসা করা হল stackoverflow.com/questions/33833259/what-is-rscat-in-php জিজ্ঞেস "কি পিএইচপি $ rsCat হয়" (যে প্রশ্ন এখনও দৃশ্যমান তৈরি করা উচিত এবং মুছে ফেলা হয়েছে) । আশ্চর্যজনকভাবে যথেষ্ট, $ভেরিয়েবল সম্পর্কে কোনও উল্লেখ নেই , তবে $$কেবল পরিবর্তনশীল ভেরিয়েবলগুলি সম্পর্কে about আমি বিশ্বাস করি যে কোথাও সংশোধন করা উচিত।
ফানকি চল্লিশ নিনার

উত্তর:


1169

অপারেটর বৃদ্ধি / হ্রাস

++ ইনক্রিমেন্ট অপারেটর

-- হ্রাস অপারেটর

Example    Name              Effect
---------------------------------------------------------------------
++$a       Pre-increment     Increments $a by one, then returns $a.
$a++       Post-increment    Returns $a, then increments $a by one.
--$a       Pre-decrement     Decrements $a by one, then returns $a.
$a--       Post-decrement    Returns $a, then decrements $a by one.

এগুলি ভেরিয়েবলের আগে বা পরে যেতে পারে।

তাহলে পরিবর্তনশীল সামনে বললে, বৃদ্ধি / হ্রাস অপারেশন পরিবর্তনশীল সম্পন্ন করা হয় প্রথম তারপর ফলাফলের ফিরিয়ে দেওয়া হয়। ভেরিয়েবলের পরে রাখলে প্রথমে ভেরিয়েবলটি ফেরত দেওয়া হয়, তারপরে ইনক্রিমেন্ট / হ্রাস অপারেশন করা হয়।

উদাহরণ স্বরূপ:

$apples = 10;
for ($i = 0; $i < 10; ++$i) {
    echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

সরাসরি উদাহরণ

উপরের ক্ষেত্রে ++$iএটি ব্যবহার করা হয়, কারণ এটি দ্রুত। $i++একই ফলাফল হবে।

প্রাক-বর্ধন কিছুটা দ্রুত হয় কারণ এটি প্রকৃতপক্ষে পরিবর্তনশীলকে বাড়িয়ে তোলে এবং এর পরে ফলাফল 'ফেরত' দেয়। পোস্ট-ইনক্রিমেন্ট একটি বিশেষ ভেরিয়েবল তৈরি করে, সেখানে প্রথম ভেরিয়েবলের মান অনুলিপি করে এবং কেবল প্রথম ভেরিয়েবল ব্যবহার করার পরে তার মানটিকে দ্বিতীয়টির সাথে প্রতিস্থাপন করে।

তবে আপনাকে অবশ্যই ব্যবহার করতে হবে $apples--, প্রথম থেকে আপনি আপেলের বর্তমান সংখ্যাটি প্রদর্শন করতে চান এবং তারপরে আপনি এটি থেকে একটি বিয়োগ করতে চান।

আপনি পিএইচপি-তে চিঠিগুলি বৃদ্ধি করতে পারেন:

$i = "a";
while ($i < "c") {
    echo $i++;
}

একবারে zপৌঁছে যাওয়া aaপরবর্তী হয়, এবং আরও অনেক কিছু।

নোট করুন যে চরিত্রের ভেরিয়েবলগুলি বাড়ানো যেতে পারে তবে হ্রাস করা যায় না এবং এমনকি কেবল সরল ASCII অক্ষর (অ্যাজ এবং এজেড) সমর্থিত।


ওভারফ্লো পোস্টগুলি স্ট্যাক করুন:


9
হ্রাসকারীরা কেবলমাত্র সংখ্যাগুলিতে অক্ষরগুলিতে কাজ করে না এমন নোটের জন্য +1
মার্ক বাকের

162
প্রত্যেকের পক্ষে, দয়া করে প্রাক-বর্ধিতকরণ অসীম দ্রুততর হওয়া সম্পর্কে গা bold় তথ্য সরিয়ে দিন। এটি অকাল অপটিমাইজেশনের চূড়ান্ত সবচেয়ে খারাপ উদাহরণ এবং যদি তারা কেবল পিএইচপি শিখতে শুরু করে তবে এই ধরণের তথ্য মানুষের মাথায় থাকা উচিত নয়।
লোটাস নোটস

14
@ লোটাস - আমি এটিকে একটি মজাদার ঘটনা মনে করি। আপনি যদি পিএইচপি, বা সি ++ ইত্যাদির একজন শিক্ষানবিস হন তবে এটি বেশ বেমানান বলে মনে হচ্ছে যে ++ i এবং i ++ বিভিন্ন গতিতে কাজ করার জন্য যথেষ্ট আলাদা। আমি এটি আকর্ষণীয় মনে।
পিটার আজতাই

12
@ পিটার আজতাই হ্যাঁ, এটি আকর্ষণীয়, তবে আপনি নিজের পোস্টটি যেভাবে গঠন করেছেন তা থেকে আপনি এটিকে পিএইচপি-র অন্যতম প্রধান তথ্য বলে মনে করেন যা ভাষাটি ব্যবহারের পক্ষে একেবারেই জরুরী।
লোটাস নোটস

4
এটি কেবল আমার বা না তা নিশ্চিত নয়, তবে আপেলের উদাহরণটি কিছুটা বিভ্রান্তিকর বলে মনে হচ্ছে। 'আমার কাছে 10 টি আপেল আছে। আমি কেবল একটি খেয়েছি "আমাকে বিশ্বাস করে যে আপনার কাছে 11 টি আপেল ছিল, তবে এখন আপনার 10 টি আছে কারণ আপনি নিজের কাছে 10 খাওয়ার পরে একটি খাওয়ার চেয়ে একটি খেয়েছিলেন, সুতরাং আপনার 9 টি রয়েছে - যা কোডটি বোঝায়।
り げ な い 告白

440

বিটওয়াইস অপারেটর

কিছুটা কি? কিছুটা 1 বা 0 এর উপস্থাপনা Bas মূলত বন্ধ (0) এবং চালু (1)

বাইট কি? একটি বাইট 8 বিট দিয়ে তৈরি করা হয় এবং বাইটের সর্বোচ্চ মান 255 হয় যার অর্থ প্রতিটি বিট সেট করা থাকে। আমরা কেন বাইটের সর্বাধিক মান 255 হয় তা লক্ষ্য করব।

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

এই উপস্থাপনা 1 বাইট

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 বাইট)

আরও ভাল বোঝার জন্য কয়েকটি উদাহরণ

"এবং" অপারেটর: &

$a =  9;
$b = 10;
echo $a & $b;

এটি আট নম্বর আউটপুট হবে কেন? আচ্ছা আমাদের টেবিল উদাহরণ ব্যবহার করে দেখুন।

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

সুতরাং আপনি টেবিল থেকে দেখতে পাচ্ছেন যে তারা একসাথে ভাগ করে নিচ্ছে তা হ'ল 8 বিট।

দ্বিতীয় উদাহরণ

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

দুটি ভাগ করা বিট 32 এবং 4 হয় যা একত্রে যোগ হয়ে 36 এ ফিরে আসে।

"বা" অপারেটর: |

$a =  9;
$b = 10;
echo $a | $b;

এটি 11 নম্বর আউটপুট হবে কেন?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

আপনি লক্ষ্য করবেন যে আমাদের 8, 2 এবং 1 কলামে 3 টি বিট সেট আছে। এগুলি যোগ করুন: 8 + 2 + 1 = 11।


6
যদি $ এ 255 এর চেয়ে বেশি মান নেয়?
আইকান ইয়াসট

@ আইকানইয়েট বেশিরভাগ অপারেটিং সিস্টেমটি 32 বিট এবং 64 বিট সিস্টেম ব্যবহার করছে, এর অর্থ সীমাটি 255 (8 বিট) এর চেয়ে অনেক বেশি।
অ্যালবার্টসামুয়েল

@ আইকানইয়েট আসলে, একটি বাইট দৈর্ঘ্যের সাথে এখানে উপস্থাপনা এমনকি সঠিক নয়, এমনকি ছোটতম পূর্ণসংখ্যা এখনও 64৪ বিট (৮ বাইট) একটি আধুনিক bit৪ বিট প্ল্যাটফর্মে স্মৃতিতে রয়েছে।
কাইই

কেন and &হয় 0 0 0 0 1 0 0 0 এবং or |হয় 0 0 0 0 1 0 1 1?
ভাইরা

285

<=> স্পেসশিপ অপারেটর

পিএইচপি 7 এ যুক্ত হয়েছে

মহাকাশযান অপারেটর <=> সর্বশেষ তুলনা অপারেটর পিএইচপি 7. যোগ, বরং এটি একটি হল অ মিশুক (সমতা অপারেটার হিসাবে একই প্রাধান্য দিয়ে বাইনারি অপারেটর ==,!= , ===, !==)। এই অপারেটরটি বাম-হাত এবং ডান-হাতের ক্রিয়াকলাপগুলির মধ্যে সহজ ত্রিমুখী তুলনা করার অনুমতি দেয়।

অপারেটরের ফলাফলটির পূর্ণসংখ্যা প্রকাশ:

  • 0 যখন উভয় অপারেশন সমান হয়
  • এর চেয়ে কম 0 যখন বাঁদিকের প্রতীক ডানদিকের প্রতীক চেয়ে কম হয়
  • বৃহত্তর 0যখন বাম প্রতীক ডানদিকের প্রতীক চেয়ে বেশী

যেমন

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

এই অপারেটরটি ব্যবহারের একটি ভাল ব্যবহারিক অ্যাপ্লিকেশনটি তুলনার ধরণের কলব্যাকগুলিতে হবে যা দুটি মানগুলির মধ্যে ত্রি-উপায় তুলনার ভিত্তিতে একটি শূন্য, নেতিবাচক বা ধনাত্মক পূর্ণসংখ্যা প্রত্যাশা করে। তুলনা ফাংশন পাসusort যেমন একটি উদাহরণ।

পিএইচপি 7 এর আগে আপনি লিখতেন ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

পিএইচপি 7 এর পরে আপনি লিখতে পারেন ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});

21
নিশ্চিত হতে পারছি না কিভাবে $a <=> $bকরতে ভিন্ন$a - $b
Rev

38
@ এসিডশাউট $a - $bসংখ্যার জন্য কাজ করে তবে স্ট্রিং, অবজেক্টস বা অ্যারে নয়।
এমক্রামলে

44
@ এমক্রামলে না, এটি এর চেয়েও খারাপ। সাধারণভাবে $a - $bএমনকি সংখ্যার জন্যও কাজ করে না; এটি কেবল পূর্ণসংখ্যার জন্য কাজ করে । এটি অ-পূর্ণসংখ্যার সংখ্যার জন্য কাজ করে না, কারণ usortআপনার তুলনাকারী ফাংশনের রিটার্ন মানগুলিকে intকাস্ট করে, যার অর্থ ০.০ হয়,, যার অর্থ ১ এবং এর চেয়ে কম পার্থক্যযুক্ত দুটি সংখ্যা যেমন 4 এবং 4.6, (নির্ভর করে কোনটি আপনার তুলকের ফাংশনের প্রথম যুক্তি হিসাবে পাস হয়) ভুল হিসাবে সমান হিসাবে তুলনা করুন।
মার্ক আমেরিকা

5
@ মার্ক অ্যামেরি মাইগ্রেশন গাইড অপারেটরের নথিভুক্ত আচরণ নয়। তার জন্য আপনি সেই পিএইচপি.এন.এল.গ্র্যাঙ্গোজিটারস.কমের জন্য ম্যানুয়ালটির ভাষা অপারেটর বিভাগটি দেখতে চান এটির পিছনে আসল আচরণটি API এর বিভিন্ন তুলনা ফাংশনগুলির উপর নির্ভর করে যেমন আপনি যখন স্ট্রিংয়ের জন্য আরআরসিএমপি করছেন, যেখানে আপনি প্রতিটি একক ক্ষেত্রে প্রকৃত রিটার্ন মান গ্যারান্টি দিতে পারবেন না। অবশ্যই, এটি প্রায় সর্বদা 1, 0, বা -1 হয় তবে লিবিসিআরসিআরসিপি মোড়কের মতো আপনি যে গ্যারান্টি দিতে পারবেন না সে ক্ষেত্রে আপনি নিরাপদ থাকার জন্য অন্তর্নিহিত বৈশিষ্ট্যের মতো একই সংজ্ঞায়িত আচরণটি উপস্থাপন করছেন
শেরিফ

9
@ মার্ক অ্যামেরি এখানে মূল বিষয়টি মানুষকে অপরিজ্ঞাত আচরণের উপর নির্ভর করতে দেওয়া নয়। যে কোনও ক্ষেত্রে কোনও মান এমন একটি মান পায় যা হুবহু 1, 0, বা -1 নয়, আপনি ভাষায় কিছু ভুল আছে এমন ভেবে কেউ বাগ রিপোর্ট দায়ের করবেন। যে কারণে আমরা নথিভুক্ত করি যে আমরা গ্যারান্টি দিতে পারি তা হ'ল মানটি 0 এর চেয়ে কম , বৃহত্তর বা সমান হবে এবং অগত্যা 1, 0 এবং -1 নয়।
শেরিফ


273
Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
x or y     Or              True if any of x or y are true x=6 y=3
                           (x < 10 or y > 10) returns true 
x || y     Or              True if any of x or y are true x=6 y=3
                           (x < 3 || y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"

239

যাদু স্থির : যদিও এটি কেবল প্রতীক নয় তবে এই টোকেন পরিবারের গুরুত্বপূর্ণ অংশ part আটটি মায়াবী ধ্রুবক রয়েছে যেগুলি কোথায় ব্যবহৃত হয় তার উপর নির্ভর করে পরিবর্তন করে।

__LINE__: ফাইলের বর্তমান লাইন নম্বর।

__FILE__: ফাইলটির পুরো পথ এবং ফাইলের নাম। একটি অন্তর্ভুক্ত ভিতরে ব্যবহার করা হয়, অন্তর্ভুক্ত ফাইলের নাম ফিরে আসে। পিএইচপি ৪.০.২ থেকে__FILE__ সবসময় সমাধান হওয়া সিমলিংকের সাথে একটি নিখুঁত পথ থাকে তবে পুরানো সংস্করণগুলিতে এটি কিছু পরিস্থিতিতে আপেক্ষিক পথ ধারণ করে।

__DIR__: ফাইলের ডিরেক্টরি। যদি অন্তর্ভুক্ত ভিতরে ব্যবহার করা হয় তবে অন্তর্ভুক্ত ফাইলের ডিরেক্টরিটি ফিরে আসে। এটি সমানdirname(__FILE__) । মূল ডিরেক্টরি না থাকলে এই ডিরেক্টরিটির নামের পেছনে স্ল্যাশ নেই। (পিএইচপি 5.3.0 এ যুক্ত হয়েছে))

__FUNCTION__: ফাংশন নাম। (পিএইচপি ৪.৩.০ এ যোগ করা হয়েছে) পিএইচপি 5 হিসাবে এই ধ্রুবকটি ফাংশনটির নাম হিসাবে ঘোষিত হয়েছিল (কেস-সংবেদনশীল) হিসাবে প্রত্যাবর্তন করে। পিএইচপি 4 এ এর ​​মান সর্বদা ছোট হয়।

__CLASS__: শ্রেণীর নাম (পিএইচপি ৪.৩.০ এ যোগ করা হয়েছে) পিএইচপি ৫ হিসাবে এই ধ্রুবক শ্রেণীর নামটি ঘোষিত হওয়ার সাথে সাথে ফেরত দেয় (কেস-সংবেদনশীল)। পিএইচপি 4 এ এর ​​মান সর্বদা ছোট হয়। শ্রেণীর নামতে এটি (যেমন Foo\Bar) হিসাবে ঘোষিত নাম স্থান অন্তর্ভুক্ত করে । নোট করুন যে পিএইচপি 5.4 হিসাবে বৈশিষ্ট্যগুলিও __CLASS__কাজ করে। যখন কোনও বৈশিষ্ট্য পদ্ধতিতে ব্যবহৃত হয়, তখন __CLASS__সেই বৈশিষ্ট্যটি ব্যবহৃত হয় এমন শ্রেণীর নাম।

__TRAIT__: বৈশিষ্ট্য নাম। (পিএইচপি 5.4.0 এ যুক্ত হয়েছে) পিএইচপি 5.4 হিসাবে এই ধ্রুবকটি বৈশিষ্ট্য হিসাবে ঘোষিত হয়েছিল (কেস-সংবেদনশীল) হিসাবে এটি প্রদান করে। বৈশিষ্ট্যের নামটিতে এটি ঘোষিত নাম স্থান অন্তর্ভুক্ত করে (উদাFoo\Bar )।

__METHOD__: শ্রেণি পদ্ধতির নাম। (পিএইচপি 5.0.0 এ যুক্ত) পদ্ধতির নামটি ঘোষিত হওয়ার সাথে সাথে ফেরত দেওয়া হয়েছে (কেস-সংবেদনশীল)।

__NAMESPACE__: বর্তমান নেমস্পেসের নাম (কেস-সংবেদনশীল)। এই ধ্রুবকটি সংকলন-সময়ে সংজ্ঞায়িত করা হয়েছে (পিএইচপি 5.3.0 এ যুক্ত হয়েছে)।

সূত্র


150

প্রকার অপারেটর

instanceof পিএইচপি ভেরিয়েবল নির্দিষ্ট শ্রেণীর ইনস্ট্যান্টেটেড অবজেক্ট কিনা তা নির্ধারণ করতে ব্যবহৃত হয়।

<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

উপরের উদাহরণটি আউটপুট দেবে:

bool(true)
bool(false)

কারণ: উপরের উদাহরণটি কেবলমাত্র একটি ব্যবহারের $aএকটি অবজেক্টmclassmclass উদাহরণটি ডেটা উদাহরণ দিয়ে নয়sclass

উত্তরাধিকার সহ উদাহরণ

<?php 
class pclass { } 
class childclass extends pclass { } 
$a = new childclass; 
var_dump($a instanceof childclass); 
var_dump($a instanceof pclass);

উপরের উদাহরণটি আউটপুট দেবে:

bool(true)
bool(true)

ক্লোন সহ উদাহরণ

<?php 
class cloneable { } 
$a = new cloneable;
$b = clone $a; 
var_dump($a instanceof cloneable); 
var_dump($b instanceof cloneable);

উপরের উদাহরণটি আউটপুট দেবে:

bool(true)
bool(true)

7
উপরেরটি 'ইন্টারফেস' এর সাথেও কাজ করে। এটি একটি নির্দিষ্ট ইন্টারফেস উপলব্ধ কিনা তা পরীক্ষা করার জন্য দরকারী।
রায়ান ভিনসেন্ট

132

পিএইচপি-তে অপারেটরগুলির একটি ওভারভিউ :


লজিক্যাল অপারেটর:

  • & a&& $ b: সত্য if a এবং $ b উভয়ই সত্য হলে।
  • । ক || $ b: সত্য যদি $ a বা $ b সত্য হয়।
  • x a xor $ b: সত্য if a বা $ b যদি সত্য হয় তবে উভয়ই সত্য নয়।
  • ! $ a: সত্য যদি $ a সত্য না হয়।
  • $ a এবং $ b: $ a এবং $ b উভয়ই সত্য হলে সত্য।
  • $ a বা $ b: সত্য if a বা $ b সত্য হলে সত্য।

তুলনা অপারেটর:

  • $ a == $ b: টাইপ জাগলিংয়ের পরে যদি সত্য $ a সমান $ b হয়।
  • $ a === $ b: সত্য if a যদি $ b এর সমান হয় এবং সেগুলি একই ধরণের হয়।
  • $ a! = $ b: টাইপ জাগলিংয়ের পরে যদি $ a এর সমান নয় TR সত্য।
  • $ a <> $ b: টাইপ জাগলিংয়ের পরে যদি সত্য $ a সমান নয় $ b।
  • $ a! == $ b: সত্য if a যদি $ b এর সমান না হয় বা তারা একই ধরণের না হয়।
  • $ a <$ b : সত্য if a যদি strictly b এর চেয়ে কম হয়।
  • । a>। b : সত্য if a যদি strictly b এর চেয়ে কঠোরতর হয়।
  • $ a <= $ b : সত্য if a যদি $ b এর চেয়ে কম বা সমান হয়।
  • $ a> = $ b : সত্য if a যদি $ b এর চেয়ে বড় বা সমান হয়।
  • $ a <=> $ বি : পূর্ণসংখ্যা কম, সমান বা শূন্যের চেয়ে বড় যখন respectively a যথাক্রমে কম, সমান বা $ বি এর চেয়ে বড় হয়। পিএইচপি 7 হিসাবে উপলব্ধ।
  • $ ক? $ b: $ c : যদি $ একটি রিটার্ন $ b অন্যথায় ফিরে আসে $ c ( টেরিনারি অপারেটর )
  • $ এ ?? $ সি : $ এ হিসাবে একই? $ a: $ c ( নাল কোলেসিং অপারেটর - পিএইচপি> = 7 প্রয়োজন)

পাটিগণিত অপারেটর:

  • - $ ক : এর বিপরীতে $ ক।
  • $ a + $ b : যোগফল $ a এবং $ বি।
  • $ a - $ b : $ a এবং $ b এর পার্থক্য।
  • $ a * $ b : $ a এবং $ b এর পণ্য।
  • $ a / $ b : ot a এবং $ b এর গুণফল।
  • $ a% $ b : ma b এর ভাগ। বি দ্বারা বিভক্ত।
  • * একটি ** $ বি : power বি'র ক্ষমতায় উত্থাপনের ফলাফল (পিএইচপি ৫..6 এ প্রবর্তিত)

অপারেটর বৃদ্ধি / হ্রাস

  • ++ $ a : বৃদ্ধি one a একে একে, তারপরে returns এ দেয়।
  • $ a ++ : ফেরৎ $ এ, তারপরে বৃদ্ধি incre এ এক করে।
  • - $ ক : একের পর এক হ্রাস $
  • $ a-- : ফেরৎ Return a, তারপরে হ্রাস। এ এক।

বিটওয়াইজ অপারেটর:

  • $ a & $ b : বিটগুলি $ a এবং $ b উভয়তে সেট করা আছে।
  • $ ক | $ b : বিটগুলি যে কোনও $ a বা or b এ সেট করা আছে সেট করা আছে।
  • $ a ^ $ b : বিটগুলি $ a বা $ b তে সেট করা হয় তবে উভয়ই সেট করে না।
  • ~ $ a : বিটস are এ সেট করা হয় না এবং বিপরীত হয়।
  • $ a << $ বি : $ a $ b পদক্ষেপের বিটগুলি বামে স্থানান্তর করুন (প্রতিটি পদক্ষেপের অর্থ "দুটি দিয়ে গুণ করুন")
  • >> a >> $ b : $ a $ b পদক্ষেপের বিটটি ডানে সরিয়ে দিন (প্রতিটি পদক্ষেপের অর্থ "দুটি দিয়ে ভাগ করা")

স্ট্রিং অপারেটর:

  • $ ক। $ বি : $ ক এবং $ বি কনক্রিটেশন।

অ্যারে অপারেটর:

  • $ a + $ b : $ a এবং $ b এর ইউনিয়ন।
  • $ a == $ b : সত্য if a এবং $ b এর কী / মান জোড়া থাকলে সত্য।
  • $ a === $ b : সত্য যদি $ a এবং $ b এর একই ক্রম এবং একই ধরণের একই কী / মান জোড়া থাকে।
  • $ a! = $ b : সত্য if a যদি not b এর সমান না হয়।
  • $ a <> $ b : সত্য if a যদি $ b এর সমান না হয়।
  • $ a! == $ b : সত্য if a যদি $ b এর সাথে অভিন্ন না হয়।

অ্যাসাইনমেন্ট অপারেটর:

  • $ a = $ b : $ b এর মান $ a তে নির্ধারিত হয়
  • $ a + = $ b : $ a = $ a + $ b এর সমান
  • $ a - = $ b : $ a = $ a - $ b এর সমান
  • $ a * = $ b : $ a = $ a * $ b এর সমান
  • $ a / = $ b : $ a = $ a / $ b এর সমান
  • $ a% = $ b : $ a = $ a% $ b এর সমান
  • $ এ ** = $ বি : $ এ = $ এ ** $ বি হিসাবে একই
  • $ a। = $ b : $ a = $ a হিসাবে একই। $ খ
  • $ a & = $ b : $ a = $ a & $ b এর সমান
  • $ a | = $ b : একইরূপে $ a = $ a | $ খ
  • $ a ^ = $ b : $ a = $ a ^ $ b এর সমান
  • $ a << = $ বি : $ এ = $ এ << $ বি হিসাবে একই
  • $ a >> = $ বি : $ এ = $ এ >> >> বি হিসাবে একই

বিঃদ্রঃ

andঅপারেটর এবং orঅপারেটরের অ্যাসাইনমেন্ট অপারেটরের চেয়ে কম অগ্রাধিকার রয়েছে =

এর অর্থ এটি $a = true and false;সমান ($a = true) and false

বেশিরভাগ ক্ষেত্রে আপনি সম্ভবত ব্যবহার করতে চান &&এবং ||, যা সি, জাভা বা জাভাস্ক্রিপ্টের মতো ভাষা থেকে পরিচিত এমনভাবে আচরণ করে।


1
এর মধ্যে একটি ত্রুটি রয়েছে $a ?? $c, এটি বলছে ঠিক একই $a ? $a : $c, তবে তৃতীয় অপারেটর যদি মান সত্য হয় তা পরীক্ষা করে অন্যদিকে নাল মানগুলির জন্য নাল কোয়েলসিং চেক করে, তাই, যদি $ a হয় 0, আপনি 0 পাবেন (কারণ 0 হয় না নাল) উদাহরণস্বরূপ, আপনার আছে যদি: $a=0; $c=5;তারপর $a?$a:$c5, এবং আয় $a??$cআয় 0.
stramin

104

স্পেসশিপ অপারেটর<=> (পিএইচপি 7 এ যুক্ত)

<=>স্পেসশিপ অপারেটরের উদাহরণ (পিএইচপি 7, উত্স: পিএইচপি ম্যানুয়াল):

ভেরিয়েবলের ত্রি-মুখী তুলনার জন্য পূর্ণসংখ্যা, ফ্লোটস, স্ট্রিংস, অ্যারে এবং অবজেক্টস।

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
// Comparison is case-sensitive
echo "B" <=> "a"; // -1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

1
রেফারেন্সের জন্য php.net/manual/en/language.operators.compistance.php দেখুন
রাজনগুপ্ত

74

{} কোঁকড়া ধনুর্বন্ধনী

এবং সর্বশেষ পোস্ট সম্পর্কে কিছু শব্দ

$x[4] = 'd'; // it works
$x{4} = 'd'; // it works

$echo $x[4]; // it works
$echo $x{4}; // it works

$x[] = 'e'; // it works
$x{} = 'e'; // does not work

$x = [1, 2]; // it works
$x = {1, 2}; // does not work

echo "${x[4]}"; // it works
echo "${x{4}}"; // does not work

echo "{$x[4]}"; // it works
echo "{$x{4}}"; // it works

4
সম্পত্তি নামের জন্য for '' ation স্বরলিপি। প্রতিধ্বনি $ চলচ্চিত্র-> চলচ্চিত্র -> great 'দুর্দান্ত-লাইন'} -> লাইন; সিম্পল এক্সএমলেমেন্টে ডেটা অ্যাক্সেস করতে ব্যবহার করা যেতে পারে। হতে পারে এটি অন্যান্য ক্ষেত্রেও ব্যবহার করা যেতে পারে। php.net/manual/en/simplexml.example-basic.php
আন্দ্রেই

68

নাল কোলেসিং অপারেটর (??)

এই অপারেটরটি পিএইচপি 7.0 এ যুক্ত হয়েছে সাধারণ ক্ষেত্রে ক্ষেত্রে একটি টার্নারি অপারেটর ব্যবহার করার প্রয়োজনে isset()। এটি উপস্থিত থাকলে এবং না থাকলে এটি তার প্রথম অপারেন্ডটি ফেরত দেয় NULL; অন্যথায় এটি তার দ্বিতীয় অপারেন্ড ফেরত দেয়।

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>

64

পিএইচপি স্ট্রিংস: পিএইচপি স্ট্রিংগুলি কেবল দুটি উপায়ে নয় চার উপায়ে নির্দিষ্ট করা যেতে পারে:

1) একক উদ্ধৃতি স্ট্রিংস:

$string = 'This is my string'; // print This is my string

2) ডাবল উদ্ধৃতি স্ট্রিংস:

$str = 'string';

$string = "This is my $str"; // print This is my string

3) হেরাদোক:

$string = <<<EOD
This is my string
EOD; // print This is my string

4) নওডক (পিএইচপি 5.3.0 থেকে):

$string = <<<'END_OF_STRING'
    This is my string 
END_OF_STRING; // print This is my string

@ রিজিয়ার 123: "হেরাদোকস শ্রেণীর বৈশিষ্ট্য প্রারম্ভিককরণের জন্য ব্যবহার করা যাবে না, তার অর্থ কী? পিএইচপি 5.3 থেকে, এই সীমাবদ্ধতাটি কেবলমাত্র ভেরিয়েবলগুলি সম্পন্ন বংশধরের জন্য বৈধ?"
পিএইচপিফ্যান

48

প্রশ্ন:

কী =>মানে?


উত্তর:

=>প্রতীকটি কি আমরা মানুষেরা "Key" => "Value"সহযোগী অ্যারেতে পৃথক পৃথক জুটি ব্যবহার করার সিদ্ধান্ত নিয়েছিলাম ।

elaborating:

এটি বুঝতে, আমাদের জানতে হবে সহযোগী অ্যারেগুলি কী। প্রথম জিনিসটি যখন সামনে আসে যখন একটি প্রচলিত প্রোগ্রামার অ্যারে ( পিএইচপি-তে ) চিন্তা করে তখন এর অনুরূপ কিছু হবে:

$myArray1 = array(2016, "hello", 33);//option 1

$myArray2 = [2016, "hello", 33];//option 2

$myArray3 = [];//option 3
$myArray3[] = 2016; 
$myArray3[] = "hello"; 
$myArray3[] = 33;

যেখানে, কোডের পরে কিছু অংশে যদি আমরা অ্যারে কল করতে চাই, তবে আমরা এটি করতে পারি:

echo $myArray1[1];// output: hello
echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello

এ পর্যন্ত সব ঠিকই. যাইহোক, মানুষ হিসাবে, আমরা এটা মনে রাখা কঠিন যে সূচক পেতে পারে [0]অ্যারের মান বছর 2016, সূচক [1]অ্যারের একটি হল শুভেচ্ছা , এবং সূচক [2]অ্যারের একটি সহজ পূর্ণসংখ্যা মান । আমাদের তখন বিকল্পটি হ'ল যা একটি সহযোগী অ্যারে বলা হয় তা ব্যবহার করা । একটি অ্যাসোসিয়েটিভ অ্যারে একটি সিক্যুয়ালিয়াল অ্যারে থেকে কিছু পার্থক্য রয়েছে ( যা পূর্বের ক্ষেত্রেগুলি হ'ল যেহেতু তারা পূর্বনির্ধারিত ক্রমে ব্যবহৃত সূচককে প্রতিটি নিম্নোক্ত মানের জন্য 1 দ্বারা বাড়িয়ে বৃদ্ধি করে )।

পার্থক্য ( ক্রমিক এবং মিশুক অ্যারের মধ্যে ):

  • অ্যাসোসিয়েটিভ অ্যারের ঘোষণাকে ঘিরে, আপনি কেবল valueঅ্যারেতে যা রাখতে চান তা অন্তর্ভুক্ত করবেন না, তবে পরবর্তী সূচকগুলির মধ্যে অ্যারে keyকল করার সময় আপনি যে সূচক মানটি ব্যবহার করতে চান তাও রেখে দেন কোড। নিম্নলিখিত সিনট্যাক্স এটা ঘোষণার সময় ব্যবহার করা হয়: "key" => "value"

  • সহযোগী অ্যারে ব্যবহার করার সময়, keyমানটি পছন্দসইটি পুনরুদ্ধার করতে অ্যারের সূচকের অভ্যন্তরে স্থাপন করা হবে value

এই ক্ষেত্রে:

    $myArray1 = array( 
        "Year" => 2016, 
        "Greetings" => "hello", 
        "Integer_value" => 33);//option 1

    $myArray2 = [ 
        "Year" =>  2016, 
        "Greetings" => "hello", 
        "Integer_value" => 33];//option 2

    $myArray3 = [];//option 3
    $myArray3["Year"] = 2016; 
    $myArray3["Greetings"] = "hello"; 
    $myArray3["Integer_value"] = 33;

এবং এখন, আগের মতো একই আউটপুট পেতে, keyমান অ্যারে সূচীতে ব্যবহৃত হবে:

echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello
echo $myArray3["Greetings"];// output: hello

শেষ পয়েন্ট:

সুতরাং উপরের উদাহরণ থেকে এটি দেখতে বেশ সহজ যে =>প্রতীকটি অ্যারের মধ্যে থাকা মানগুলির সূচনা চলাকালীন একটি অ্যারেতে প্রতিটি keyএবং valueজোড়াগুলির মধ্যে একটি সহযোগী অ্যারের সম্পর্ক প্রকাশ করতে ব্যবহৃত হয় ।


36

প্রশ্ন :

এখানে পিএইচপি-তে "&" এর অর্থ কী?

পিএইচপি "এবং" অপারেটর

একবার ব্যবহারে অভ্যস্ত হয়ে উঠলে জীবন আরও সহজ করে তোলে .. (নীচে সাবধানতার সাথে উদাহরণ দেখুন)

& সাধারণত উভয় $ a এবং $ b সেট করা বিটগুলি চেক করে।

আপনি কি লক্ষ্য করেছেন যে এই কলগুলি কীভাবে কাজ করে?

   error_reporting(E_ERROR | E_WARNING | E_PARSE);
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    error_reporting(E_ALL & ~E_NOTICE);
    error_reporting(E_ALL);

সুতরাং উপরের সমস্তটি হ'ল বিটওয়াইজ অপারেটর এবং বিটসের খেলা।

এর একটি ব্যবহারযোগ্য ক্ষেত্রে হ'ল নীচে দেওয়া যেমন সহজ কনফিগারেশন, যাতে একটি একক পূর্ণসংখ্যার ক্ষেত্র আপনার জন্য হাজার হাজার কম্বো সঞ্চয় করতে পারে।

বেশিরভাগ মানুষ ডক্সটি ইতিমধ্যে পড়েছে তবে এই বিটওয়াইস অপারেটরগুলির প্রকৃত বিশ্ব ব্যবহারের ক্ষেত্রে নির্ভর করে না।

আপনি ভালবাসবেন যে উদাহরণ

<?php

class Config {

    // our constants must be 1,2,4,8,16,32,64 ....so on
    const TYPE_CAT=1;
    const TYPE_DOG=2;
    const TYPE_LION=4;
    const TYPE_RAT=8;
    const TYPE_BIRD=16;
    const TYPE_ALL=31;

    private $config;

    public function __construct($config){
        $this->config=$config;

        if($this->is(Config::TYPE_CAT)){
            echo 'cat ';
        }
        if($this->is(Config::TYPE_DOG)){
            echo 'dog ';
        }
        if($this->is(Config::TYPE_RAT)){
            echo 'rat ';
        }
        if($this->is(Config::TYPE_LION)){
            echo 'lion ';
        }
        if($this->is(Config::TYPE_BIRD)){
            echo 'bird ';
        }
        echo "\n";
    }

    private function is($value){
        return $this->config & $value;
    }
}

new Config(Config::TYPE_ALL);
// cat dog rat lion bird
new Config(Config::TYPE_BIRD);
//bird
new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
//dog bird
new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
//rat lion bird

30

==পরিবর্তনশীল ডেটা-টাইপ বিবেচনা না করে চেক সমতার জন্য ব্যবহৃত হয়

===ভেরিয়েবল মান এবং ডেটা-টাইপ উভয়ের জন্য সমতা পরীক্ষার জন্য ব্যবহৃত হয়

উদাহরণ

$a = 5

  1. if ($a == 5) - সত্য মূল্যায়ন করবে

  2. if ($a == '5') - সত্যায় মূল্যায়ন করবে কারণ এই উভয় মানের পিএইচপি অভ্যন্তরীণভাবে তুলনার সময় সেই স্ট্রিংয়ের মানটিকে পূর্ণসংখ্যায় রূপান্তর করে এবং তারপরে উভয় মানকে তুলনা করে

  3. if ($a === 5) - সত্য মূল্যায়ন করবে

  4. if ($a === '5') - মিথ্যাতে মূল্যায়ন করবে, কারণ মানটি 5, তবে এই মান 5টি পূর্ণসংখ্যা নয়।


27

নাল কোলেসেস অপারেটর "??" (পিএইচপি 7 এ যুক্ত হয়েছে)

কোনও অপারেটরের পক্ষে ধরা পড়ার মতো নাম নয়, তবে পিএইচপি rather এর পরিবর্তে সহজ নাল কোলেসেস নিয়ে আসে তাই আমি ভেবেছিলাম যে আমি একটি উদাহরণ ভাগ করব।

পিএইচপি 5-তে, ইতিমধ্যে আমাদের কাছে একটি টেরিনারি অপারেটর রয়েছে, যা একটি মান পরীক্ষা করে এবং তারপরে দ্বিতীয় উপাদানটি সত্য করে দেয় এবং তৃতীয়টি যদি তা না দেয়:

echo $count ? $count : 10; // outputs 10

এর জন্য একটি শর্টহ্যান্ডও রয়েছে যা আপনাকে দ্বিতীয় উপাদানটি এড়িয়ে যেতে দেয় যদি এটি প্রথমটির মতো হয়: প্রতিধ্বনি $ গণনা?: 10; // এছাড়াও ফলাফল 10

পিএইচপি 7 এ আমরা অতিরিক্তভাবে পাই ?? অপারেটর যা চরম বিভ্রান্তির নির্দেশ না দিয়ে যা আমি সাধারণত দুটি প্রশ্ন চিহ্ন একসাথে ব্যবহার করব তার পরিবর্তে আমাদের মানগুলির একটি স্ট্রিং একসাথে চেইন করতে দেয়। বাম থেকে ডানে পড়া, প্রথম মান যা বিদ্যমান এবং শূন্য নয় তা হ'ল মানটি যা ফিরে আসবে।

// $a is not set
$b = 16;

echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16

এই কনস্ট্রাক্টটি ব্যবহারকারী ইনপুট বা বিদ্যমান কনফিগারেশন থেকে সম্ভবত এক বা একাধিক মানগুলিকে অগ্রাধিকার দেওয়ার জন্য এবং যদি কনফিগারেশনটি অনুপস্থিত থাকে তবে নিরাপদে কোনও নির্দিষ্ট ডিফল্টে ফিরে আসার জন্য দরকারী। এটি একটি ছোট বৈশিষ্ট্য কিন্তু এটি এমন একটি যা আমি জানি যে আমার অ্যাপ্লিকেশনগুলি পিএইচপি 7 তে আপগ্রেড হওয়ার সাথে সাথে আমি ব্যবহার করব।


12

নুলযোগ্য রিটার্ন প্রকারের ঘোষণা

পিএইচপি 7 রিটার্নের ধরণের ঘোষণার জন্য সমর্থন যোগ করে। একইভাবে আর্গুমেন্ট প্রকারের ঘোষণার ক্ষেত্রে, রিটার্নের ধরণের ঘোষণাগুলি কোনও ফাংশন থেকে ফিরে আসবে এমন মানের ধরণ নির্দিষ্ট করে। রিটার্ন ধরণের ঘোষণার জন্য একই ধরণেরগুলি পাওয়া যায় যেমন আর্গুমেন্ট ধরণের ঘোষণার জন্য পাওয়া যায়।

রিটার্ন টাইপ ঘোষণার উপর কঠোর টাইপিংয়েরও প্রভাব রয়েছে। ডিফল্ট দুর্বল মোডে, প্রত্যাবর্তিত মানগুলি সঠিক ধরণের কাছে জোর করা হবে যদি তারা ইতিমধ্যে সেই ধরণের না হয়। শক্ত মোডে, প্রত্যাবর্তিত মানটি সঠিক ধরণের হতে হবে, অন্যথায়, একটি টাইপরর নিক্ষেপ করা হবে।

পিএইচপি .1.১.০ অনুসারে, প্রশ্ন চিহ্ন (?) দিয়ে প্রকারের নামটি উপস্থাপন করে প্রত্যাবর্তন মানগুলি শোধনযোগ্য হিসাবে চিহ্নিত করা যায়। এটি সূচিত করে যে ফাংশনটি নির্দিষ্ট ধরণের বা NULL দেয়।

<?php
function get_item(): ?string {
    if (isset($_GET['item'])) {
        return $_GET['item'];
    } else {
        return null;
    }
}
?>

সূত্র


7

স্প্লট অপারেটর হিসাবে তিনটি ডটস (...) (পিএইচপি 5.6 থেকে)

পিএইচপি-র একটি অপারেটর রয়েছে "..." (তিনটি বিন্দু) যা স্প্ল্যাট অপারেটর হিসাবে পরিচিত। এটি কোনও ফাংশনে নির্বিচারে সংখ্যক পরামিতিগুলি পাস করতে ব্যবহৃত হয় এবং এই ধরণের ফাংশনটিকে ভারিয়াদিক ফাংশন বলা হয়। আসুন "..." (তিনটি বিন্দু) ব্যবহারের উদাহরণ নেওয়া যাক।

উদাহরণ 1:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}

echo calculateNumbers(10, 20, 30, 40, 50);

//Output 150
?>

"…" ব্যবহার করার সময় ক্যালকুলেট নাম্বার () ফাংশনের প্রতিটি যুক্তি $ প্যারামের মধ্য দিয়ে যায়…

"…" অপারেটরটি ব্যবহার করার বিভিন্ন উপায় রয়েছে। কয়েকটি উদাহরণের নীচে:

উদাহরণ 2:

<?php
function calculateNumbers($no1, $no2, $no3, $no4, $no5){
    $total = $no1 + $no2 + $no3 + $no4 + $no5;
    return $total;
}

$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers(...$numbers);

//Output 150
?>

উদাহরণ 3:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
$no1 = 70;
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers($no1, ...$numbers);

//Output 220
?>

উদাহরণ 4:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}

$numbers1 = array(10, 20, 30, 40, 50);
$numbers2 = array(100, 200, 300, 400, 500);
echo calculateNumbers(...$numbers1, ...$numbers2);

//Output 1650

?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.