La relación debe ser "composición" (no tiene sentido la existencia de "detalle" sin la relación con factura, por lo tanto es una "relación de vida" entre ambas clases) y el diagrama UML sería el siguiente:
y la traducción a código sería:
Factura.php
Código PHP:
require_once 'FacturaDetalle.php';
class Factura
{
private $_colDetalle = array();
public function addDetalle(FacturaDetalle $detalle)
{
$this->_colDetalle[] = $detalle;
}
}
FacturaDetalle.php
Código PHP:
class FacturaDetalle
{
/** código de la clase **/
}
Forma de uso: index.php
Código PHP:
require_once 'Factura.php';
require_once 'FacturaDetalle.php';
abstract Index
{
public static function main()
{
$factura = new Factura();
// Agrego 4 detalles a la factura
$factura->addDetalle(new FacturaDetalle());
$factura->addDetalle(new FacturaDetalle());
$factura->addDetalle(new FacturaDetalle());
$factura->addDetalle(new FacturaDetalle());
}
}
Index::main();
Más información sobre el tema de
diagramas y traducción de relaciones
Saludos!