Difference between revisions of "API/Di"
From aMember Pro Documentation
Alex-scott (Talk | contribs) (→Example 3: store value in database for 2 hours. If value access later than in 2 hours, it will be destroyed) |
Alex-scott (Talk | contribs) |
||
Line 20: | Line 20: | ||
Am_Di::getInstance()->store->set('mykey', 'Some Value', '+2 hours'); | Am_Di::getInstance()->store->set('mykey', 'Some Value', '+2 hours'); | ||
echo Am_Di::getInstance()->store->get('mykey'); | echo Am_Di::getInstance()->store->get('mykey'); | ||
+ | </source> | ||
+ | |||
+ | === Example 4: send custom e-mail message === | ||
+ | <source lang="php"> | ||
+ | $mail = Am_Di::getInstance()->mail; // create copy of Zend_Mail object, preconfigured by aMember | ||
+ | $mail->addTo('xxx@sample.com', 'John Doe'); | ||
+ | $mail->setSubject('A Plugin Custom E-Mail'); | ||
+ | $mail->setBodyText('my message text'); | ||
+ | try { | ||
+ | $mail->send(); | ||
+ | } catch (Exception $e) { | ||
+ | echo "Error sending e-mail: " . $e->getMessage() . "\n"; | ||
+ | } | ||
</source> | </source> |
Latest revision as of 07:26, 17 November 2011
Am_Di class in aMember implements dependency injection pattern. Instead of using 'singletons in each class, we are using Am_Di instance that stores references to necessary objects, and creates objects by demand.
From controllers (Am_Controller), tables (Am_Table), records (Am_Record) and plugins (Am_Plugin), module bootstraps (Bootstrap_xx), Am_Di instance is accessible with method call $this->getDi();
From other parts of program, including site-custom file 'application/configs/site.php, the same Am_Di instance is available as Am_Di::getInstance().
Example 1: get config value
echo Am_Di::getInstance()->config->get('my-config-key', 'default value to return if my-config-key not set');
Example 2: check if paypal plugin is enabled and if it is enabled, return reference to plugin object
if (Am_Di::getInstance()->plugins_payment->isEnabled('paypal')) return Am_Di::getInstance()->plugins_payment->loadGet('paypal');
Example 3: store value in database for 2 hours. If value accessed later than in 2 hours, it will be destroyed and null returned
Am_Di::getInstance()->store->set('mykey', 'Some Value', '+2 hours'); echo Am_Di::getInstance()->store->get('mykey');
Example 4: send custom e-mail message
$mail = Am_Di::getInstance()->mail; // create copy of Zend_Mail object, preconfigured by aMember $mail->addTo('xxx@sample.com', 'John Doe'); $mail->setSubject('A Plugin Custom E-Mail'); $mail->setBodyText('my message text'); try { $mail->send(); } catch (Exception $e) { echo "Error sending e-mail: " . $e->getMessage() . "\n"; }