मेरे पास दो अलग-अलग मॉड्यूल हैं जिनका स्वतंत्र रूप से उपयोग किया जा सकता है, लेकिन मॉड्यूल 2 मॉड्यूल 1 पर निर्भर है।पीडीओ लेनदेन से जुड़े नेस्टेड परमाणु संचालन में मदद की ज़रूरत है
मॉड्यूल 2 में एक ऑपरेशन है जिसे परमाणु होने की आवश्यकता है, और यह मॉड्यूल 1 में एक ऑपरेशन को कॉल करता है जिसे परमाणु भी होना चाहिए।
मान लिया जाये कि मैं पीडीओ को पीडीओ :: ATTR_ERRMODE निर्धारित किया है: पीएचपी गंभीर त्रुटि:: न आया हुआ अपवाद 'PDOException' संदेश के साथ
'वहां पहले से ही एक सक्रिय लेन-देन है' ERRMODE_EXCEPTION, भारी genericised निम्न और कोड कतरना इस पैदावारModule1:
<?php
class Module1
{
...
public function atomicOperation($stuff)
{
$this->pdo->beginTransaction();
try {
$stmt = $this->pdo->prepare(...);
...
$this->pdo->commit();
}
catch (Exception $ex) {
$this->pdo->rollBack();
throw $ex;
}
}
}
Module2:
<?php
class Module2
{
public $module1;
...
public function atomicOperation($stuff)
{
$this->pdo->beginTransaction();
try {
$stmt = $this->pdo->prepare(...);
...
$this->module1->atomicOperation($stuff);
...
$this->pdo->commit();
}
catch (Exception $ex) {
$this->pdo->rollBack();
throw $ex;
}
}
}
मुझे यकीन है कि इस बारे में जाने के लिए सबसे अच्छा तरीका है नहीं कर रहा हूँ - नेस्टेड ऑपरेशन को निश्चित रूप से स्वतंत्र रूप से बुलाया जाएगा और बिल्कुल परमाणु होना चाहिए जब इसे अपने अधिकार में बुलाया जाए। लेनदेन का प्रबंधन करने और परमाणु संरक्षण को संरक्षित करने के लिए कक्षा 'उपयोगकर्ता पर ऑनस रखना वांछनीय नहीं है क्योंकि मुझे यकीन है कि कक्षा के उपयोगकर्ता इसे कभी लागू नहीं करेंगे।
कुछ fluff जोड़ा गया। आपके परमाणु संचालन अकेले लेनदेन या उनके आसपास के दोस्तों के साथ उपयोग करने में सक्षम होंगे। – Arkh