নাল কোলেসিং অ্যাসাইনমেন্ট কী? ?? = পিএইচপি 7.4 অপারেটর


9

আমি আসন্ন পিএইচপি 7.4 বৈশিষ্ট্যগুলি সম্পর্কে একটি ভিডিও দেখেছি এবং এই ??=নতুন অপারেটরটি দেখেছি । আমি ইতিমধ্যে ??অপারেটর জানি । এটি কেমন আলাদা?

উত্তর:


10

ডক্স থেকে :

Coalesce برابر বা ?? = অপারেটর একটি অ্যাসাইনমেন্ট অপারেটর। যদি বাম প্যারামিটারটি নাল হয় তবে ডান প্যারামিটারটির মান বাম দিকে নির্ধারণ করে। মানটি যদি শূন্য না হয় তবে কিছুই করা হয় না।

উদাহরণ:

// The folloving lines are doing the same
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names, the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';

সুতরাং এটির জন্য মূলত একটি শর্টহ্যান্ড হ'ল যদি এর আগে নির্ধারিত না করা হয়।


4
এছাড়াও দেখে মনে হচ্ছে আমরা অফিসিয়াল ডক্সে একটি টাইপো পেয়েছি। The folloving lines...
পাভেল লিন্ট

এটি 100% সঠিক নয় যে 2 লাইনগুলি "একই" করছে, দ্বিতীয় ক্ষেত্রে বাম দিকটি কেবল একবার মূল্যায়ন করা হয়, সুতরাং এটি আরও কার্যকর
the_nuts

7

ইন পিএইচপি 7 এই মূলত মুক্তি পায় একজন বিকাশকারী একটি তিন অপারেটর সঙ্গে মিলিত একটি isset () চেক প্রক্রিয়া সহজ করার অনুমতি দেয়। উদাহরণস্বরূপ, পিএইচপি 7 এর আগে আমাদের এই কোডটি থাকতে পারে:

$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');

যখন পিএইচপি 7 প্রকাশিত হয়েছিল, আমরা পরিবর্তে এটি লেখার সক্ষমতা পেয়েছি:

$data['username'] = $data['username'] ?? 'guest';

এখন, যখন পিএইচপি 7.4 প্রকাশিত হয়, এটি আরও আরও সরল করা যেতে পারে:

$data['username'] ??= 'guest';

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


3

নাল কোলেসিং অ্যাসাইনমেন্ট অপারেটর নাল কোয়েলসিং অপারেটরের ফলাফল নির্ধারণের একটি শর্টহ্যান্ড উপায়।

সরকারী প্রকাশের নোটগুলির একটি উদাহরণ :

$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
    $array['key'] = computeDefault();
}

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