मेरे स्टैंडअलोन (लार्वेल के बिना) प्रोजेक्ट में मैं इल्यूमिनेट आईओसी कंटेनर का उपयोग करना चाहता हूं। इसके अलावा मैं illuminate/support
घटक द्वारा प्रदत्त App
मुखौटा के माध्यम से ऐप कंटेनर तक पहुंच बनाना चाहता हूं। मैंने दोनों घटकों को स्थापित किया (v5.0.28)।स्टैंडअलोन रोशनी के लिए रोशनी/समर्थन/फेकाडे/ऐप मुखौटा कैसे बनाएं IoC कंटेनर
function setup_App(){
$container = new Illuminate\Container\Container();
Illuminate\Support\Facades\Facade::setFacadeApplication($container);
class_alias('Illuminate\Support\Facades\App', 'App');
}
setup_App();
App::bind('w', 'Widget');
$widget = App::make('w');
दुर्भाग्य से, कुछ बाध्य करने के लिए कोशिश कर परिणाम में: यहाँ मेरी (सरलीकृत) कोड है
Fatal error: Call to undefined method Illuminate\Support\Facades\App::bind() in ...\illuminate\support\Facades\Facade.php on line 213
यहाँ कि लाइन
$instance = static::getFacadeRoot();
...
return $instance->$method($args[0], $args[1]); // <--- line 213
कहाँ $instance
पर कोड है एक उदाहरण है Illuminate\Support\Facades\App
, $method == 'bind'
, $args[0] == 'w'
और $args[1] == 'Widget'
का। समस्या यह है कि $instance
Illuminate\Container\Container
का उदाहरण नहीं है और वर्ग Illuminate\Support\Facades\App
पर इसकी स्थिर संपत्ति $app
पर मनमाने ढंग से कार्य करने के लिए कोई समर्थन नहीं है।
यह काम करने के लिए मैं Illuminate\Support\Facades\App
के लिए निम्न समारोह कहा:
public function __call($method , array $arguments) {
return call_user_func_array(array(static::$app, $method), $arguments);
}
लेकिन निश्चित रूप से संपादन बाहरी घटक ऐसा करना सही नहीं है !!! निश्चित रूप से किसी ने इससे पहले सामना किया है!
तो सवाल यह है: ऐसा करने का उचित तरीका क्या है?