Php 带参数的magento 2加载类
我有个简单的问题 我正在尝试将此类加载到我自己的类中: 逻辑上是在构造中调用它: \Picqer\Financials\Moneybird\Moneybird$Moneybird 但问题是它需要事先建立\Picqer\Financials\Moneybird\Connection 那么,我如何在代码中使用它:Php 带参数的magento 2加载类,php,magento2,Php,Magento2,我有个简单的问题 我正在尝试将此类加载到我自己的类中: 逻辑上是在构造中调用它: \Picqer\Financials\Moneybird\Moneybird$Moneybird 但问题是它需要事先建立\Picqer\Financials\Moneybird\Connection 那么,我如何在代码中使用它: class OnepageControllerSuccessAction implements \Magento\Framework\Event\ObserverInterface {
class OnepageControllerSuccessAction implements \Magento\Framework\Event\ObserverInterface
{
protected $_order;
protected $_connection;
protected $_invoiceFactory;
protected $_moneybird;
public function __construct(
\Magento\Sales\Api\Data\OrderInterface $order,
\Picqer\Financials\Moneybird\Connection $connection,
\Picqer\Financials\Moneybird\Moneybird $moneybird,
\Wemessage\Moneybird\Model\InvoiceFactory $invoiceFactory
){
$this->_order = $order;
$this->_connection = $connection;
$this->_invoiceFactory = $invoiceFactory;
$this->_moneybird = $moneybird;
}
...
public function execute(
\Magento\Framework\Event\Observer $observer
) {
$orderids = $observer->getEvent()->getOrderIds();
foreach($orderids as $orderid){
$order = $this->_order->load($orderid);
$this->_connection->setRedirectUrl('');
...
// connection has been established and now we need to pass it to the moneybird
$moneybird = $this->_moneybird($this->_connection);
这将导致错误:PHP致命错误:未捕获错误:函数名必须是字符串
解决这个问题的一种方法是在该类中添加方法setConnection并调用它,但问题是composer正在从存储库下载它,所以如果我想在另一个安装中使用我的模块,我必须执行相同的步骤
还有其他解决办法吗
添加了moneybird文件的构造:
/**
* Moneybird constructor.
* @param \Picqer\Financials\Moneybird\Connection $connection
*/
public function __construct(Connection $connection)
{
$this->connection = $connection;
}
因此,它不会导致混乱和不必要的问题。给定的代码在哪里抛出错误消息?$moneybird=$this->\u moneybird($this->\u连接);这会产生错误$this->\u连接是一个对象,您没有调用类的任何方法\u moneybird??这有意义吗?你不能将一个类的实例作为另一个实例的参数传递。如果你想调用构造函数,为什么不这样做呢?显然,
$this->\u moneybird
是一个实例化类,给定代码在哪里抛出错误消息?$moneybird=$this->\u moneybird($this->\u连接);这会产生错误$this->\u连接是一个对象,您没有调用类的任何方法\u moneybird??这有意义吗?你不能将一个类的实例作为另一个实例的参数传递。如果你想调用构造函数,为什么不这样做呢?显然,$this->\u moneybird
是一个实例化的类