2016-01-12 4 views
6

दाना 1.0 में मैं इस तरह वर्ग उदाहरणों साझा करने के लिए सक्षम होने के लिए इस्तेमाल किया:पिंपल डी शेयर गिरावट आई है। अब क्या?

$app['some_service'] = $app->share(function() { 
    return new Service(); 
}); 

यह अब पदावनत किया जा रहा है और मैं ऐसा करने का नया तरीका है क्या लगता है करने में असमर्थ हूँ।

+1

ऐसा लगता है कि कंटेनर सिस्टम http://pimple.sensiolabs.org/ पर प्रलेखित है – ceejayoz

उत्तर

11

दाना 1.0 (Silex 1) में, आप ऐसा करते हैं:

$app['shared_service'] = $app->share(function() { 
    return new Service(); 
}); 

$app['non_shared_service'] = function() { 
    return new Service(); 
}; 

दाना 3.0 (Silex 2) में आप इस (जो विपरीत है!) कार्य करें:

$app['shared_service'] = function() { 
    return new Service(); 
}; 

$app['non_shared_service'] = $app->factory(function() { 
    return new Service(); 
}); 
1

लगता है कि डिफ़ॉल्ट रूप से पिंपल 3.0 (जो सिलेक्स 2.0 उपयोग करता है) द्वारा हमेशा सेवा का एक ही उदाहरण देता है। यदि आप इस व्यवहार को नहीं चाहते हैं तो आपको इसके बारे में स्पष्ट होना चाहिए और कारखाने के फ़ंक्शन का उपयोग करना होगा।

1

की निर्भर करता है मुर्गी संस्करण!

दाना 3.0

पर दाना 1,0

$container['shared'] = $container->shared(function(){ 
    return new Class(); 
}); 
$container['non_shared'] = function() { 
    return new Class(); 
}; 

पर

$container['shared'] = function() { 
    return new Class(); 
}; 
$container['non_shared'] = $container->factory(function() { 
    return new Class(); 
}); 

याद है, जब आप एक साझा सेवा बनाने, वे क्या वापसी नहीं बदलेगा। जब आप एक गैर साझा सेवा बनाते हैं, हर बार जब आप उपयोग करते हैं, तो पिंपल आपको सेवा का एक नया उदाहरण प्रदान करेगा।

संबंधित मुद्दे