क्या PHP में किसी वर्ग के नाम से किसी वस्तु को तुरंत भेजना संभव है, यदि कक्षा का नाम स्ट्रिंग में संग्रहीत है?
क्या PHP में किसी वर्ग के नाम से किसी वस्तु को तुरंत भेजना संभव है, यदि कक्षा का नाम स्ट्रिंग में संग्रहीत है?
जवाबों:
हां, जरूर।
$className = 'MyClass';
$object = new $className;
<?php
$type = 'cc';
$obj = new $type; // outputs "hi!"
class cc {
function __construct() {
echo 'hi!';
}
}
?>
स्थैतिक भी:
$class = 'foo';
return $class::getId();
आप एक स्टोरेज जैसे डेटाबेस में अपने classname (s) / विधियों को संग्रहीत करके कुछ गतिशील आह्वान कर सकते हैं। यह मानते हुए कि वर्ग त्रुटियों के लिए लचीला है।
sample table my_table
classNameCol | methodNameCol | dynamic_sql
class1 | method1 | 'select * tablex where .... '
class1 | method2 | 'select * complex_query where .... '
class2 | method1 | empty use default implementation
आदि .. फिर अपने कोड में वर्गों और विधियों के नामों के लिए डेटाबेस द्वारा लौटाए गए स्ट्रिंग्स का उपयोग करें। यदि आप अपनी कल्पना तक अपनी कक्षाओं के लिए sql क्वेरी स्टोर कर सकते हैं, तो स्वचालन का स्तर भी।
$myRecordSet = $wpdb->get_results('select * from my my_table')
if ($myRecordSet) {
foreach ($myRecordSet as $currentRecord) {
$obj = new $currentRecord->classNameCol;
$obj->sql_txt = $currentRecord->dynamic_sql;
$obj->{currentRecord->methodNameCol}();
}
}
मैं इस विधि का उपयोग REST वेब सेवाएँ बनाने के लिए करता हूँ।