आइए कहें कि मेरे पास एक सरणी है जिसे मैं एक मूल्य वस्तु में परिवर्तित करना चाहता हूं।PHP गतिशील वर्ग लोडिंग
/* file UserVO.php*/
class UserVO
{
public $id;
public $email;
public function __construct($data)
{
$this->id = (int)$data['id'];
$this->email = $data['email'];
}
}
और इस प्रकार मैं मूल्य की वस्तुओं की मेरी सारिणी निर्मित:
/* file UserService.php*/
$array = array(
array(...),
array(...));
$count = count($array);
for ($i = 0; $i < $count; $i++)
{
$result[] = new UserVO($array[$i]);
}
return $result;
ठीक है, तो यह सब ठीक काम करता है
मेरे मूल्य वस्तु वर्ग इस प्रकार है। हालांकि, मैं वीओ को निर्दिष्ट करना चाहता हूं जिसे गतिशील रूप से बनाया जाना है, ताकि मेरे वीओ बनाने के लिए मेरे पास एक गतिशील कार्य हो।
कुछ की तरह:
$ret = create_vo($array, 'UserVO');
function create_vo($data, $vo)
{
$count = count($data);
for ($i = 0; $i < $count; $i++)
{
$result[] = new $vo($data[$i]); //this obviously wont work...Class name must be a valid object or a string
}
return $result;
}
मुझे पता है मैं एक स्विच बयान के साथ ऐसा कर सकते हैं (के माध्यम से पुनरावृत्ति सब मेरी VO के) ... लेकिन इसमें कोई शक नहीं है एक बहुत बहुत अधिक सुरुचिपूर्ण है समाधान। अगर मैं कई 'शामिल'
किसी भी मदद की बहुत सराहना करता हूं तो यह सुपरकोल भी होगा।
आपका ऑटो लोडर अभी भी उपयोग करता है या इसकी आवश्यकता होती है, यह आवश्यक होने पर केवल हर चीज को लोड नहीं करता है, इसलिए आपका तर्क सबसे मान्य नहीं है। जैसे ऑटोलोडर का उपयोग करना अधिक भार है। –