У меня есть следующие объекты, которые я хотел бы заставить их взаимодействовать между собой.Пользователь может создавать каждый объект отдельно от других и в разное время.Последнее использование состоит в том, что пользователь связывает все объекты вместе, чтобы составить окончательный.
Invoice.php
<?php
class Invoice
{
private $header;
private $xml;
public function __construct()
{
// code that initializes $this XML tree (root)
}
public function setInvoiceHeader($invoiceHeader)
{
/* code that should merge $this->xml with the one from the $invoiceHeader param
but I can't access it here because of private visibility and I would like to avoid
the public visibility */
}
public function writeXMLDocument()
{
// code that returns the XML document
}
}
?>
InvoiceHeader.php
<?php
class InvoiceHeader
{
private $xml;
public function __construct()
{
// code that initializes $this XML tree
}
public function setTransmissionData($transmissionData)
{
/* code that should merge $this->xml with the one from the $transmissionData param
but I can't access it here because of private visibility and I would like to avoid
the public visibility */
}
}
?>
TransmissionData.php
<?php
class TransmissionData
{
private $xml;
private $transmissionIdNode;
public function __construct()
{
// code that initializes $this XML tree
}
public function setTransmissionId($idCountry, $idCode)
{
// code that creates the XML node with the params
}
}
?>
Я не могу найти способ передать private
$ xml между объектами.
Я бы не хотел использовать видимость public
, потому что я не хочу, чтобы пользователь мог получить доступ к низкоуровневой реализации.
Я хотел бы избежать использования наследования и protected
видимостипотому что я думаю, что эти объекты не так сильно связаны (InvoiceHeader не является Invoice, а TransmissionData не является InvoiceHeader);кроме того, единственное, что они могли бы унаследовать, это поле ... это как пустая трата для моих ушей.
Я хотел бы относиться к ним больше как к некоторым компонентам, предполагая, что это возможно.