আমাকে একটি অ্যাপ্লিকেশনটিতে কিছু শর্ত আপডেট করার দায়িত্ব দেওয়া হয়েছিল। আমার মূল্যায়ন করার জন্য একটি ডেটা সেট আছে, এবং এটি প্রয়োগের মাধ্যমে নিম্নলিখিত পদ্ধতিতে কঠোরভাবে কোড করা হয়েছে:
$arr = array(
'a' => 'apple',
'b' => 'orange',
'c' => 1,
'd' => 2,
'e' => 5,
'f' => 'green',
'g' => 'red',
'h' => 'yellow',
)
$res1 = ($arr['a'] == 'apple') ? TRUE : FALSE;
$res2 = (($arr['b'] == $arr['f']) && ($arr['c'] < $arr['d']) ? TRUE : FALSE;
$res3 = (($arr['e'] == '5') && $res2) ?TRUE : FALSE;
এবং তাই ...
এটি অনেক জায়গায় বজায় রাখা দুঃস্বপ্ন।
আমি মূলত যা খুঁজছি তা হ'ল ডেটা মূল্যায়নের জন্য ক্যোরিয় স্ট্রিংয়ে যাওয়ার কিছু উপায় তৈরি করা। শুরু করার জন্য একটি সাধারণ সূত্রকে অ্যারে হিসাবে সংজ্ঞায়িত করা যেতে পারে
$formula = ['a', '=', 'apple'];
function query($formula, $arr) {
switch ($formula[1]) {
case '=':
return ($arr[$formula[0]] == $formula[2]);
case '!=':
return ($arr[$formula[0]]!= $formula[2]);
case '>':
return ($arr[$formula[0]] > $formula[2]);
case '<':
return ($arr[$formula[0]] == $formula[2]);
}
}
এটি তখন প্রসারিত এবং পুনরাবৃত্তভাবে বলা যেতে পারে
$formula = [['a','=','apple'], 'AND', ['e','<','10']]
তবে আমি যা খুঁজছি তা হ'ল সূত্রগুলি এ স্ট্রিংগুলি সঞ্চয় করা, যেমন:
"((([a]="orange") OR ([c]<"4")) AND ([g]="red"))"
যেখানে [] অ্যারে কীগুলি সনাক্ত করতে পারে
অথবা এক্সেলের মতো কিছু হতে পারে
"AND(OR(IF('a'='orange'),IF('c'<4)),IF('g'='red'))"
এটি করার কোনও পরিষ্কার সমাধান আছে কি? এটির জন্য কীভাবে পুরো গ্রন্থাগারটি তৈরি করা যায় তা সম্পর্কে আমার ধারণা আছে, সম্ভবত ভবিষ্যতে।
আমি কোডটিতে প্রতিবার নতুন শর্ত যুক্ত করতে চাই না। তারা ইতিমধ্যে সমস্ত অ্যাপ্লিকেশন জুড়ে আছে। এটি কনফিগারেশনে সঞ্চয় করা এবং এক জায়গায় প্রসারিত বা সংশোধন করা ভাল।
যে কোনও সহায়তা অনেক প্রশংসিত।
eval()
।