পিএইচপি ফাংশন স্বাক্ষরগুলি কেন এত বেমানান? [বন্ধ]


17

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

<?php
function foo(&$var) { }

foo($a); // $a is "created" and assigned to null

$b = array();
foo($b['b']);
var_dump(array_key_exists('b', $b)); // bool(true)

$c = new StdClass;
foo($c->d);
var_dump(property_exists($c, 'd')); // bool(true)
?>

array_key_exists()এবং property_exists()ফাংশন লক্ষ্য করুন । প্রথমটির মধ্যে, সম্পত্তির নাম (অ্যারের কী) প্রথম প্যারামিটার এবং দ্বিতীয়টিতে এটি দ্বিতীয় পরামিতি। অন্তর্দৃষ্টি দ্বারা, কেউ তাদের অনুরূপ স্বাক্ষর থাকবে বলে আশা করবে। এটি বিভ্রান্তির দিকে নিয়ে যেতে পারে এবং এই ধরণের সংশোধন করে উন্নয়নের সময় নষ্ট হতে পারে।

পিএইচপি, বা এই বিষয়ে কোনও ভাষা, সম্পর্কিত ফাংশনগুলির স্বাক্ষরগুলি সামঞ্জস্য করার বিষয়টি বিবেচনা করা উচিত নয়?


2
+1 ব্র্যাভো, পিএইচপি সম্পর্কে আমি প্রথম যে জিনিসটি লক্ষ্য করেছি এবং এটি সর্বদা বিরক্তিকর মনে হয়েছে
কেভিন

সাধরণ। একটি আইডিই ব্যবহার করুন।
বেন ডাবুইসন

উত্তর:


10

আপনার প্রস্তাবিতটি হ'ল মূলত অনেক বিদ্যমান ফাংশনে স্বাক্ষর পরিবর্তন করে। এক মিনিটের জন্য ভাবুন যে বিদ্যমান কোডে এর কী প্রভাব ফেলবে। এখন ধরুন পিএইচপি গ্রুপটি পিএইচপি সংস্করণ এন প্রকাশ করেছে যা 30% ফাংশনের স্বাক্ষর পরিবর্তন করে। এখন কল্পনা করুন যে আপনাকে পিএইচপি ভিএন এবং পিএইচপি ভি উভয়টিতে চলমান এমন কোড লিখতে হবে {-N-1} - এতে কত মজা হবে?

এখন কল্পনা করুন যে আপনি একজন হোস্টার বা কর্পোরোটিভ ডেটা সেন্টার ম্যানেজার - পিএইচপি ভিএন সমর্থন করার জন্য আপনাকে কী উত্সাহিত করতে হবে, যদি আপনি একবার স্যুইচ করেন, সমস্ত কোডটি নষ্ট হয়ে যায় এবং ব্যবহারকারীরা পিচফোরস এবং টর্চ নিয়ে আপনার অফিসে আসবেন?


4
+1 একবার আপনি কোনও ভুল উপায়ে শুরু করার পরে এটি শক্ত হয়ে গেছে, তবে বর্তমান অবস্থাতে এটির এত বড় একটি ব্যবহারকারী-বেস রয়েছে।
অ্যান্ডি ফ্লেমিং

4
এটা একটা ভাল দিক. আমি আসলে এটি সম্পর্কে সচেতন ছিলাম, তবে আমার মূল বক্তব্যটি তাদের প্রথম দিকে এই বিষয়ে সচেতন হওয়া উচিত ছিল।
শামীম হাফিজ

7
@ শামীম ট্রু, যা পিএইচপি প্রথমে খারাপ খ্যাতি অর্জনের একটি অংশ;)
অ্যান্ডি ফ্লেমিং

1
পিএইচপি, অনেক কিছুর মতোই একটি ক্ষুদ্র সমস্যা সমাধানের জন্য একটি ছোট হাতিয়ার হিসাবে শুরু করেছিল, যদি কেউ এটি "সঠিকভাবে" পিছনে নকশা তৈরি করতে পারে তবে এটি তার চেয়ে সুন্দর হতে পারে, তবে সম্ভবত এটি ট্র্যাকশনে পৌঁছতে না পারে, সুতরাং কেউই এটি ব্যবহার করবে না ... এবং অন্য একটি ছোট সরঞ্জামটিতে "জিতেছে", এমন একটি সরঞ্জাম ছিল যার সাথে বিভিন্ন অসঙ্গতি রয়েছে ...
johannes

3
হ'ল অবমূল্যায়নের মতো বিষয় রয়েছে। আপনি নতুন, মানযুক্ত নাম তৈরি করেন এবং ফাংশন নামের পুরানো "সালাদ-বার" অবমূল্যায়ন করেন তবে কয়েকটি প্রকাশের জন্য এগুলি রেখে যান around কিছু ভাল প্রচারিত মুহুর্তে আপনি একটি নতুন বড় সংস্করণ প্রকাশের সাথে বেরিয়ে আসবেন যা তাদের সাথে দূরে থাকবে। এটি এইভাবে করা হয়। এটি পিএইচপি ডেভস এর অংশে খাঁটি কাপুরুষতা যে তারা এটি করেনি। তারা প্রবেশের স্বল্প বাধা অতিক্রম করছে যা পিএইচপিকে অন্যান্য ওয়েব ভাষার চেয়ে আরও বেশি প্রান্ত দেয় এবং তারা সেই কারণে সফল হয়, সুতরাং তারা মূল ভাষার উন্নতি করতে পারে না।
ড্যান রে

10

কারণ পিএইচপি হল কোনও ভাষা ছাড়াই ভাষা।

এবং আক্ষরিক অর্থে প্রত্যেকেই দু'একটি ফাংশন যুক্ত করতে পারত এবং শুরুতে ধারাবাহিকতার কোনও প্রশ্নই আসে না। তাই, জগাখিচুড়ি।


সবাই ফাংশন যুক্ত করতে পারবেন না
StasM

@ স্ট্যাসএম: ডিইভি গ্রুপ কে করতে পারে? কোনও লিঙ্ক যেখানে আমি জানতে পারি যে সেই গোষ্ঠীটি কীভাবে কাজ করে?
শামীম হাফিজ

@ স্ট্যাসম: ঠিক আছে, আমি কিছুটা বাড়িয়েছি। আসল সমস্যা হ'ল শুরু থেকেই কনভেনশনের অভাব বা কোনও এক ব্যক্তির কোড সংহতিতে দায়বদ্ধ। এখন অনেক দেরি হয়ে গেছে। আক্ষরিকভাবে অন্য ভাষা হিসাবে পিএইচপি না করেই যদি তা পরিবর্তন করা যায় তবে আমি সন্দেহ করি।
ts01

@ শামীম দেব গ্রুপ পরিচালনার নীতি দুটি: conক্যমত্য এবং মিলন। যা দুর্দান্ত, তবে আমি ভাল ভাষা বিকাশের জন্য যথেষ্ট না ভীত
ts01

@ শামীম: php.net এবং wiki.php.net দিয়ে শুরু করুন।
StasM

4

বেশিরভাগ ভাল ভাষা হ'ল এবং ধারাবাহিক হতে চেষ্টা করি।

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

আমি মনে করি সফল পিএইচপি প্রোগ্রামাররা হয় নির্দিষ্ট সিনট্যাক্সের কথা মনে রাখে বা এমন সফ্টওয়্যার ব্যবহার করে যা স্বয়ংক্রিয়ভাবে তাদের সিনট্যাক্সটি বলে।


অবহেলা ফাংশন একটি জিনিস, সহজ। আর্গুমেন্টের অর্ডার পরিবর্তন করা আরও বেশি কঠিন
ts01

@ ts01 নখগুলি অপরিহার্য সমস্যা। শুধুমাত্র অবস্থানগত পরামিতিগুলির সাথে জানার উপায় নেই যে আপনার বিদ্যমানটি foo(a,b)এখনই হওয়া উচিত foo(b,a)কারণ কেউ ফু এর স্বাক্ষর পরিবর্তন করেছে।
ফ্র্যাঙ্ক শায়ারার

@ ts01, @Frank: আপনি খুব ফাংশনের নাম পরিবর্তন করতে চাই ... "property_exists" যেখানে ভালো জিনিস না একটি বিশেষ ভাল ধারণা হয় অন্য কোন শালীন নাম। ব্যক্তিগতভাবে, আমি দেখতে চাই অ্যারেগুলি আসল বস্তুতে পরিণত হয় যাতে আপনি বলতে পারেন $array->key_exists('whatever')তবে, meh :-)
ডিন হার্ডিং

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

3

অসঙ্গতির প্রধান উত্স হ'ল বিল্ড ফাংশনগুলির মধ্যে অনেকগুলি (বেশিরভাগ?) সত্যিই কিছু সি লাইব্রেরির আশেপাশে মোড়ক থাকে। প্রাথমিক চিন্তাভাবনাটি ছিল "আমি সি ফাংশন xxxx মোড়ানো করছি সুতরাং প্যারামিটারের ক্রমটি আমার একইভাবে রাখা উচিত"। যখন "খাঁটি পিএইচপি" ফাংশনটি লেখার কথা আসে তখন এই চিন্তাভাবনাটি "এক্সএক্সএক্সএক্সএক্স ফাইল এবং অপশনগুলিতে প্রসারিত করা হত নতুন ফাংশনটিতে একটি ফাইলের নাম এবং বিকল্পগুলি লাগে যাতে এটি yyy একই ক্রমে একই পরামিতিগুলি গ্রহণ করা বোধগম্য হয়।

এখানে বড় ত্রুটিটি হ'ল অন্তর্নিহিত সি লাইব্রেরিগুলি শুরু করার সাথে খুব বেমানান ছিল।


সি এর নামকরণ কনভেনশনগুলি (যেমন তারা হ'ল) ​​অন্যান্য ফাংশন নামের জন্য বক্রভাবে সরানোর সময় তারা কিছু ক্ষেত্রে (বিশেষত স্ট্রং ফাংশন) মুড়ে রাখে এমন সি ফাংশন নামও রেখেছিল।
ড্যান রে

2

(ক?) কারণটি ছিল পিএইচপি-র পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ। অনেকগুলি অ্যাপ্লিকেশনকে ভেঙে ফাংশনের নাম পরিবর্তনের পরিবর্তে ফাংশনগুলি রয়ে গেছে। তবে, অন্তর্দৃষ্টি দ্বারা, হ্যাঁ ধারাবাহিক ফাংশন নামকরণ নতুন ভাষার জন্য বিবেচনা করা উচিত।

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

সামঞ্জস্যতা> ধারাবাহিকতা (কমপক্ষে পিএইচপি)


1
অন্যান্য ভাষাগুলি, আমি ডক্সের ধ্রুবক উল্লেখ ছাড়াই লিখতে পারি। পিএইচপি আমাকে সর্বদা উদ্বিগ্ন হতে হয় ... এই ফাংশনটি কি "str_" বা "" str "বানান? এটি কি "অ্যারে _" - এমন কিছু বা আমরা অ্যারেগুলি উল্লেখ করি না? স্ট্রিং দেওয়া হলে "দৈর্ঘ্য ()" কী করবে? ওহে জাহান্নাম, না, এটি "স্ট্রেন ()" আমি সত্যিই চেয়েছিলাম ... এটি "সুই, খড়ের কাঁটা" বা "খড়ের কাঁটা, সুই"? অন্য কোনও ভাষা আমাকে সে সবের মধ্যে ফেলে দেয় না।
ড্যান রে

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