পিএইচপিতে বড় হাতের বনাম বনাম লোয়ারকেস


135

আমি যখন পিএইচপি শিখছিলাম তখন আমি কোথাও পড়েছি যে আপনি সবসময় বুলিয়ানের উপরের কেস সংস্করণগুলি ব্যবহার করা উচিত TRUEএবং FALSEকারণ "সাধারণ" ছোট হাতের সংস্করণগুলি trueএবং falseব্যবহারের জন্য "নিরাপদ" ছিল না।

এটি এখন অনেক বছর কেটে গেছে এবং আমি যে পিএইচপি স্ক্রিপ্ট লিখেছি তা বড় হাতের সংস্করণ ব্যবহার করে। এখন, যদিও আমি প্রশ্ন করছি, যেহেতু আমি দেখলাম প্রচুর পিএইচপি ছোট হাতের সংস্করণ (অর্থাত জেন্ড ফ্রেমওয়ার্ক) দিয়ে লেখা আছে।

/ কি বড় হাতের সংস্করণটি ব্যবহার করার কোনও কারণ ছিল, না ছোট হাতের ব্যবহারটি পুরোপুরি ঠিক আছে?

সম্পাদনা: যে এই ক্ষেত্রে প্রযোজ্য উল্লেখ করতে ভুলে গেছেন NULLএবং nullহিসাবে ভাল।


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

2
এটা সত্যি না. আমি এটি 5M পুনরাবৃত্তির সাথে পরীক্ষা করেছি এবং তারা উভয়ই আমার পিসিতে 0.5s একই ফলাফল দিয়েছে: পি
অ্যালেক্স

9
@ অ্যালেক্স পেকার অর্থ এইও হতে পারে যে লোয়ারকেস বুলিয়ানগুলির প্রকৃত লেখাটি দ্রুততর। এটি কী বোঝায়, কম কী ব্যবহার করতে হবে। পার্থক্য যদিও সামান্য।
মার্টি লাইন

দুঃখিত, আমি আপনার পক্ষে ভোট দেওয়ার পরে আমি দুর্ঘটনাক্রমে ভোট দিয়েছি।
সাইফ

1
একটি আকর্ষণীয় পর্যবেক্ষণ: var_export () ছোট এবং ছোট হাতের অক্ষর হিসাবে মিথ্যা লিখেন, তবে বড়হাতে বড় হবে না। লাভলি, আহ? 3v4l.org/6 ওলক
ডনকুইক্সোট

উত্তর:


89

সরকারী পিএইচপি ম্যানুয়াল বলেছেন:

একটি বুলিয়ান আক্ষরিক নির্দিষ্ট করতে, সত্য বা মিথ্যা কীওয়ার্ডগুলি ব্যবহার করুন। দুটোই কেস-সংবেদনশীল।

হ্যাঁ, true === TRUEএবং false === FALSE

ব্যক্তিগতভাবে যাইহোক, আমি পঠনযোগ্যতার কারণে TRUEবেশি trueএবং FALSEবেশি পছন্দ করি false। এটি ব্যবহার আমার পক্ষপাত জন্য একই কারণে ORওভার orবা ||, এবং ব্যবহার করে ANDউপর andবা &&

PSR-2 মান প্রয়োজন true, falseএবং nullছোট হাতের মধ্যে হতে হবে।


81
শুধু যে বাতলান করতে চান ORএবং ||পিএইচপি বিভিন্ন অপারেটার হয় (হিসাবে তারা বিভিন্ন প্রাধান্য আছে), যেমন হয় ANDএবং &&। (সুতরাং উদাহরণস্বরূপ &&এবং ||নিয়োগ অপারেটার বেশী প্রাধান্য আছে, কিন্তু ORএবং ANDনয়।)
Johrn

21
আজকের আইডিই এর সাথেও আমি বেশিরভাগ আইডিই'র জন্য সিন্ট্যাক্স হাইলাইটার হিসাবে খাঁটি আপার-কেস বুলিয়ান থাকার কারণটি দেখতে পাচ্ছি না এবং এগুলি খুব স্বতন্ত্রতার সাথে পৃথক করে।
রবার্টপিট

37
আমি তাদের ছোট ছোট টাইপ করতে পছন্দ করি তাই আমাকে শিফট কীটি ধরে রাখতে হবে না।
ack

6
আমি নিম্নতর কেসটিও পছন্দ করি - জাভা এর মতো, তবে প্রত্যেকটির নিজস্ব। আমি চাই যদি তারা এক পথে স্থায়ী হয় এবং কেবল আমাদের সকলকে একটি বা অন্যটিতে পরিবর্তন করিয়ে দেয় !!!!! এটি আসলেই আমার হওয়া উচিত নমনীয়তা নয়!
রায়

5
@ ক্যারিল: পিএইচপিকে ঘৃণা করার জন্য প্রচুর ভাল কারণ রয়েছে (যেমন উপরে দেখুন জোহরনের উপরে উল্লিখিত কী, আমি এটি একটার জন্য জানতাম না), তবে এটি মূলত কেস-সংবেদনশীল, মিশ্র ক্ষেত্রে খুব অদ্ভুত কিছু নেই is এক্সপ্রেশন একই হচ্ছে। কি হল আজেবাজে কথা অবশ্য এটি দ্রবণ সাধারণ জ্ঞানহীনতা সঙ্গে কেস-সংবেদনশীলতা এবং কেস-insensitivity। (উদাহরণস্বরূপ: স্ট্যাকওভারফ্লো
.

110
define('TRUE', false);
define('FALSE', true);

শুভ ডিবাগিং! (পিএইচপি < 5.1.3 (2 মে 2006) , ডেমো দেখুন )

সম্পাদনা: বড় হাতের অক্ষরগুলি ধ্রুবক এবং লোয়ারকেসগুলি মান। আপনি মানটিতে আগ্রহী, ধ্রুবক নয়, যা সহজেই পরিবর্তন করতে পারে।


Eliminated run-time constant fetching for TRUE, FALSE and NULL

author      dmitry <dmitry>
            Wed, 15 Mar 2006 09:04:48 +0000 (09:04 +0000)
committer   dmitry <dmitry>
            Wed, 15 Mar 2006 09:04:48 +0000 (09:04 +0000)
commit      d51599dfcd3282049c7a91809bb83f665af23b69
tree        05b23b2f97cf59422ff71cc6a093e174dbdecbd3
parent      a623645b6fd66c14f401bb2c9e4a302d767800fd

করে d51599dfcd3282049c7a91809bb83f665af23b69 (এবং 6f76b17079a709415195a7c27607cd52d039d7c3 )


7
-1 কারণ ক) এটি অর্থহীন। খ) এটি প্রশ্নের উত্তর দেয় না। এবং গ) আমি ইতিমধ্যে সঠিক উত্তরটি গ্রহণ করেছি এবং এটি কোনও অতিরিক্ত সহায়ক তথ্য উপস্থাপন করে না ।
অস্টিন হাইড

36
তারপরে আমাকে বিশদে ব্যাখ্যা করতে পারি: বড় হাতের অক্ষরগুলি ধ্রুবক এবং লোয়ারকেসগুলি মান। আপনি মানটিতে আগ্রহী, ধ্রুবক নয়, যা সহজেই পরিবর্তন করতে পারে। সুতরাং, আপনি যদি লেখার উপরে কিছুটা ভাবতেন এবং জরিমানা দেওয়ার জন্য তাড়াহুড়ো না করেন, আপনি সম্ভবত এটি বুঝতে পারতেন।
রাদু

13
আপনি যে পয়েন্টটি তৈরি করছেন (এখন) তা আমি বুঝতে পারি তবে আপনি যেভাবে মূলত এটি তৈরি করেছিলেন তা (আইএমও) ক্রিপ্টিক এবং অর্থহীন। আপনি যদি প্রাথমিকভাবে উত্তরটি সম্পাদনা করে থাকেন তবে আমি উত্সাহিত হত, কারণ এটি আসলে খুব ভাল বিষয়।
অস্টিন হাইড

4
এটি সঠিক উত্তর। এই জন্য পয়েন্ট পাওয়া উচিত ছিল।
সিরিয়ালওয়্যার

22
সম্পাদন করা হিসাবে, যে বিবরণ একটি বিট বিভ্রান্তিকর ... প্রকৃত মান নিজেদের (যা টোকেন ডাউন কম্পাইল পাবেন T_NULL, T_TRUEএবং T_FALSE, পার্স সময়ে), হয় কেস-অবশ তাই ব্যবহার NULLআসলে একটি "ধ্রুবক" নয় --- যদি না আপনি করতে এটি একটি ধ্রুবক ব্যবহার define()। সহজভাবে ব্যবহার NULLবা TRUEএর অর্থ এই নয় যে এটি একটি ধ্রুবক, যেমন কোনও ধ্রুবক নেই, পিএইচপি এটি আক্ষরিক হিসাবে ব্যাখ্যা করে। আরও সঠিক বিবরণ হ'ল ছোট হাতের সংস্করণগুলিকে নতুন করে সংজ্ঞায়িত করা যায় না , অন্য কোনও ক্ষেত্রে তাত্পর্য থাকতে পারে
জো

31

লোয়ারকেস ব্যবহার করুন।

  1. এটি টাইপ করা সহজ। (আইএমও)
  2. এটি পড়া সহজ। (আইএমও)
  3. জাভাস্ক্রিপ্ট বুলিয়ানগুলি ছোট হাতের এবং কেস-সংবেদনশীল।

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

11

আপনি যদি JSON ব্যবহার করার ইচ্ছা পোষণ করেন, তবে আরএফসি 7159 বলেছেন:

আক্ষরিক নামগুলি ছোট হাতের অক্ষরে আবশ্যক। অন্য কোনও আক্ষরিক নাম অনুমোদিত নয়।

পিএইচপি 5.6 এ পিছিয়ে থাকা বেমানান পরিবর্তনের তালিকা থেকে :

জসন_ডেকোড () এখন জেএসএন স্পেসিফিকেশন অনুসারে জেএসওএন এর আক্ষরিক সত্য, মিথ্যা এবং নালকে অ-ছোট হাতের রূপগুলি প্রত্যাখ্যান করে

মতে PSR-2 মান :

পিএইচপি কীওয়ার্ডগুলি নিম্নতর ক্ষেত্রে থাকা উচিত।

পিএইচপি স্থির হওয়া সত্য, মিথ্যা, এবং ন্যূনতম ক্ষেত্রে হওয়া আবশ্যক।


সঠিক, তবে এই প্রশ্নটি বিশেষত জেএসএন নয়, পিএইচপি-র উপরের / ছোট হাতের বুলিয়ানদের ক্ষেত্রে ছিল । উদাহরণস্বরূপ, উভয় json_encode(TRUE)এবং json_encode(true)ফলন 'true'
অস্টিন হাইড

3
জেএসওএন উল্লেখ করার জন্য দুঃখিত, আমি যদি এই সমস্ত উল্লেখগুলি সরিয়ে ফেলে কেবল পিএসআর -2 উল্লেখ করি তবে কি ভাল হয়?
ম্যান্ড্রেকে

4
আমি মনে করি JSON- এর রেফারেন্সটি উপযুক্ত, কারণ আপনি প্রায়শই পিএইচপি সহ জাভাস্ক্রিপ্ট / জেএসএন ব্যবহার করেন এবং ধারাবাহিকতার সন্ধান করতে পারেন।
ডগ ক্রেস

9

আমি পিএসআর ব্যান্ডওয়্যাগনে উঠার আগে পর্যন্ত সি স্টাইলের সত্য / মিথ্যা বুলিয়ানগুলি সমস্ত কনসেটের মতো, সমস্ত ক্যাপগুলিতে করতাম ।

পিএসআর -২ এর ২.৪ ধারা:

পিএইচপি স্থির হওয়া সত্য, মিথ্যা, এবং ন্যূনতম ক্ষেত্রে হওয়া আবশ্যক।

সুতরাং মূলত, যদি আপনি ওপেন সোর্স স্টাইলের বিশদ বিবরণ দিয়ে সুন্দর খেলতে চান তবে বুলিয়ানদের ছোট হাতের অক্ষর হবে।


5

এটা কোন ব্যাপার না, trueঠিক হিসাবে একই TRUE। একই জন্য falseএবং null। আমি শুনিনি যে এটি কোনও মুহুর্তে গুরুত্বপূর্ণ ছিল।

এই সমস্ত মানগুলি উদ্ধৃত করে আপনি যে জিনিসগুলিকে গোলযোগ করতে পারেন তার একমাত্র উপায়, উদাহরণস্বরূপ:

$foo = false;   // FALSE
$bar = "false"; // TRUE

$foo2 = true;   // TRUE
$bar2 = "true"; // TRUE

$foo3 = null;   // NULL
$bar3 = "null"; // TRUE

উপরের বা ছোট হাতের ব্যবহার আপনাকে সীমাবদ্ধ বা উত্সাহিত করতে পারে তা কেবল আপনার সংস্থার বা আপনার নিজস্ব কোডিং গাইডলাইন। তা ছাড়া, আপনি যে কোনও একটির জন্য নির্দ্বিধায় রয়েছেন এবং এটি কোনও সমস্যায় নেতৃত্ব দেবে না।


মিথ্যা এবং NULL এক নয়। is_null () মান === মিথ্যা হলে সত্যটি দেয় না।
নোহ গুডরিচ

9
@ নোহ গুডরিচ, আমি কোনও মুহুর্তে এটি বোঝাতে চাইনি falseএবং nullএকই হবে। আমি বলেছিলাম যে "একই জন্য যায় falseএবং null", যার অর্থ হ'ল উভয়কে ছোট বা বড় হাতের অক্ষরে প্রকাশ করা যায়।
তাতু উলমানেন

5

আমি মিথ্যা এবং মিথ্যা মধ্যে পার্থক্য যাচাইয়ের জন্য সহজ কোড লিখেছি : প্রতিটি পুনরাবৃত্তি এমন কিছু করছিল যা:

    for ($i = 0; $i < self::ITERATIONS; ++$i) {
       (0 == FALSE) ;
    }

ফলাফল এখানে:

Iterations: 100000000
using 'FALSE': 25.427761077881 sec
using 'false': 25.01614689827 sec

সুতরাং আমরা দেখতে পারি যে পারফরম্যান্সটি বুলিয়ানদের ক্ষেত্রে খুব সামান্য ছোঁয়া - ছোট হাতের গতি দ্রুত। তবে অবশ্যই আপনি দেখতে পাবেন না।


কী জেএস ইঞ্জিন? আজকাল জেএস কার্যকর করার আগে স্মৃতিতে সংকলিত হয়।
টিবেরিউ-আয়নু স্টান

1
পিএইচপি কার্যকর করার আগে টোকানাইজড এবং সময় মত কোনও পার্থক্য থাকা উচিত। অন্য একটি উত্তর ইঙ্গিত দেয় যে উপরেরটি দ্রুত ছিল। যে কোনও পরীক্ষায় এই মাত্রার পার্থক্য উপেক্ষা করা উচিত - এই পার্থক্যটি পুনরাবৃত্তির জন্য 2.5e-7।
ডগ ক্রেস

4

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

বড় হাতের যেটি মনে আসে তা ব্যবহার করার একটি সুবিধা হ'ল এগুলি আটকানো থাকে এবং কোডে খুঁজে পাওয়া সহজ।


2
পরিপাটি-নেসের জন্য +1। সমস্ত ক্যাপ রীতি from
পেট্রুজা

2

নিজেকে একই জিনিস জিজ্ঞাসা করার সময় আমি এই পুরানো প্রশ্নটি জুড়ে এসেছি। সংজ্ঞায়িত ('সত্য', মিথ্যা) সাথে ভাল পয়েন্ট; সংজ্ঞায়িত ('মিথ্যা', সত্য); যদিও পিএইচপি 5 তে প্রয়োগ হয় না। পিএইচপি 5 কোডে সেই লাইনগুলি লেখার মতামত লেখার মতো।


6
কেবলমাত্র ভবিষ্যতের রেফারেন্সের জন্য, আপনি এটি "উত্তর" হিসাবে পোস্ট করেছেন। স্ট্যাকওভারফ্লোতে, traditionalতিহ্যবাহী ফোরামগুলির বিপরীতে, কথোপকথন পোস্টগুলি যা আসলে প্রশ্নের সমাধান হিসাবে কাজ করে না এবং সহায়ক তথ্য সরবরাহ করে না সেগুলি মূল প্রশ্ন বা প্রাসঙ্গিক উত্তরের মন্তব্য হিসাবে পোস্ট করা উচিত। এই ক্ষেত্রে, আপনার পোস্টটি উত্তরের চেয়ে আমার প্রশ্নের মন্তব্যে আরও উপযুক্ত হবে।
অস্টিন হাইড

8
প্রকৃতপক্ষে এটি পিএইচপি 5: পি
অ্যালেক্স

1

উইন্ডোজ 7x64bit অ্যাপাচি / 2.4.9 পিএইচপি / 5.5.14 এ আমার টেস্টটি এখানে রয়েছে

$blockLimit = 50;
while($blockLimit > 0): $blockLimit--;

//STAR Here ================================================

$msc = microtime(true);
for ($i = 0; $i < 100000; $i++) {
   echo (FALSE);
}
echo 'FALSE took ' . number_format(microtime(true)-$msc,4) . " Seconds\r\n";
$msc = microtime(true);
for ($i = 0; $i < 100000; $i++) {
   echo (false);
}
echo 'false took ' . number_format(microtime(true)-$msc,4) . " Seconds\r\n";

echo "\r\n --- \r\n";
//Shutdown ==================================================
endwhile;

এবার FALSE 20 বার জিতেছে। সুতরাং বড় বড় আমার পরিবেশে দ্রুত।

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