मेरे समारोह, तैयार(), परिभाषा है
/**
* @covers /data/DB_Service::prepare
* @uses /inc/config
*/
public function testNoExceptionIsRaisedForValidPrepareWithConditionsAndConditionsRequiredArguments() {
$method = new ReflectionMethod('DB_Service', 'prepare');
$method->setAccessible(TRUE);
$dbs = new DB_Service(new Config(), array('admin', 'etl'));
$data = array('message' => '', 'sql' => array('full_query' => ""));
$method->invoke($dbs, $data, array('conditionKey' => 'conditionValue'), TRUE);
}
उठाता (और अपने परीक्षण टूट जाता है)
ReflectionException: विधि DB_Service की प्रार्थना किए :: तैयार()
हालांकि विफल रहा है, इस
/**
* @covers /data/DB_Service::prepare
* @uses /inc/config
*/
public function testNoExceptionIsRaisedForValidPrepareWithConditionsAndConditionsRequiredArguments() {
$method = new ReflectionMethod('DB_Service', 'prepare');
$method->setAccessible(TRUE);
$dbs = new DB_Service(new Config(), array('admin', 'etl'));
//$data is no longer declared - the array is directly in the call below
$method->invoke($dbs, array('message' => '', 'sql' => array('full_query' => "")), array('conditionKey' => 'conditionValue'), TRUE);
}
काम करता है पूरी तरह से और परीक्षण सफल रहा है।
वैरिएबल घोषित क्यों करता है और फिर काम नहीं कर रहा है, लेकिन बस इसे विधि कॉल में बनाना काम करता है? मुझे लगता है कि यह कैसे काम करता है() काम करता है, लेकिन मुझे पता लगाना प्रतीत नहीं होता है।
प्रति [इस अतः पोस्ट] (http://stackoverflow.com/questions/8971261/php-5-4-call-time-pass-by-reference-easy-fix-available), इस बहिष्कृत हो गई है PHP5 में और इसका उपयोग निराश है। विधि परिभाषा में मैं संदर्भ द्वारा तर्क पारित करता हूं, इसलिए कॉल में फिर से ऐसा करना सही नहीं होना चाहिए। –
@ मैथ्यूहेर्बस्ट आप बिल्कुल सही हैं, मेरी गलती। – wavemode
आह, यह invokeArgs महान है। धन्यवाद! –