目前我正在编写这样的插件:
namespace Lawyers\Controller\Plugin;
use Zend\Mvc\Controller\Plugin\AbstractPlugin,
Braintree as BraintreeSDK;
class Braintree extends AbstractPlugin
{
protected $__initialized = false;
protected $__pm;
protected $__em;
/**
* Set Braintree config settings
*
* @return void
*/
protected function init() {
if($this->__initialized) {
return;
}
$this->__pm = $this->getController()->getEntityRepository();
$this->__pm = $this->__pm['ExternalPayment'];
$this->__em = $this->getController()->getEntityManager();
$config = $this->getController()->getServiceLocator()->get('Config');
\Braintree_Configuration::environment($config['braintree']['env']);
\Braintree_Configuration::merchantId($config['braintree']['merchant_id']);
\Braintree_Configuration::publicKey($config['braintree']['public_key']);
\Braintree_Configuration::privateKey($config['braintree']['private_key']);
$this->__initialized = true;
}
/**
* Create new entity for transaction
*
* @return \Lawyers\Model\Entity\ExternalPayment
*/
protected function spawn() {
return new \Lawyers\Model\Entity\ExternalPayment();
}
/**
* New sales transaction
*
* @param mixed $Payer - person who pays this transaction
* @param mixed $Source - source of payment: Lawyers\Model\Entity\Questions or Lawyers\Model\Entity\Lead
* @param array $transaction - payment details:
* 'amount' => '1000.00',
* 'creditCard' => array(
* 'number' => '5105105105105100',
* 'expirationDate' => '05/12'
* )
* @return mixed - transaction id or null
*/
public function sell($Payer, $Source, $transaction) {
$this->init();
$data = array(
'status' => 'pending',
'amount' => $transaction['amount'],
);
# ....
}
}
为插件初始化实例变量而不$this->init()
在每次调用中使用的正确方法是什么?我没有看到类似插件方法的构造函数:(