Объект наследует переменные от другого класса

Я работаю над классом отслеживания электронной торговли Google на PHP. Цель этого класса — создать URL для отправки с помощью cURL в Google Analytics.

Сначала я создаю транзакцию (URL) с некоторыми параметрами, такими как:

  • ID клиента
  • иа
  • номер транзакции
  • присоединение

и затем я добавляю к нему элементы транзакции (продукты — это корзина).

Я хочу, чтобы элемент наследовал первые четыре вышеуказанных параметра. Так что мне не нужно каждый раз устанавливать их заново.

Класс электронной коммерции

class EcommerceTracking {

protected $_urls = array();
protected $_items = array();

/*
* The Protocol version. The current value is '1'.
* This will only change when there are changes made that are not backwards compatible.
*/
protected $_v = '1';

/*
* The tracking ID / web property ID. The format is UA-XXXX-Y.
* All collected data is associated by this ID.
*/
protected $_tid = '';

/*
* This anonymously identifies a particular user, device, or browser instance.
* For the web, this is generally stored as a first-party cookie with a two-year expiration.
*/
protected $_cid = 0;

/*
* The type of hit
*/
protected $_t = 'transaction';

/* A unique identifier for the transaction. This value should be the same for both the
* Transaction hit and Items hits associated to the particular transaction.
*/
protected $_ti = 0;

/*
* Specifies the affiliation or store name.
*/
protected $_ta = 'online';

/*
* Specifies the total revenue associated with the transaction.
*/
protected $_tr = 0;

/*
* Specifies the total shipping cost of the transaction.
*/
protected $_ts = 0;

/*
* Specifies the total tax of the transaction.
*/
protected $_tt = 0;

/*
* When present indicates the local currency for all transaction currency values.
* Value should be a valid ISO 4217 currency code.
*/
protected $_cu = 'EUR';


public function __contruct( $params ) {
$this->_tid     = $params['ua'];
$this->_cid     = $params['client_id'];
$this->_ti  = $params['transaction_id'];
$this->_ta  = $params['affiliation'];
$this->_tr  = number_format( $params['revenue'], 2 );
$this->_ts  = number_format( $params['shipping'], 2 );
$this->_tt  = number_format( $params['tax'], 2 );
}

public function addItem( TrackingItem $item ) {
$this->_items[]     = $item;
$this->_urls[]  = $item->getUrl();
}

public function getItems() {
return $this->_items;
}

public function getUrls() {
return $this->_urls;
}

public function send() {

if( ! empty( $this->_urls ) ) {
foreach( $this->_urls as $url ) {

$ch = curl_init();
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_URL, 'http://www.google-analytics.com/collect' );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY );
curl_setopt( $ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727)' );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $url );
curl_exec( $ch );
curl_close( $ch );

}

}

}

}

Класс TrackingItem

class TrackingItem {

// The type of hit.
protected $_t = 'item';

// Specifies the item name.
protected $_in;

// Specifies the price for a single item / unit.
protected $_ip = 0;

// Specifies the number of items purchased.
protected $_iq = 1;

// Specifies the SKU or item code.
protected $_ic;


public function __construct( $name, $price, $qty, $sku ) {
$this->_in  = $name;
$this->_ip  = number_format( $price, 2 );
$this->_iq  = $qty;
$this->_ic  = $sku;
}

public function getName() {
return $this->_in;
}

public function getUrl() {
$url = 'v=' . $this->_v . '&tid=' . $this->_tid . '&cid=' . $this->cid . '&t=' . $this->_t .
'&ti=' . $this->_ti . '&in=' . $this->_in . '&ip=' . $this-_ip . '&iq=' . $this->_iq . '&ic=' . $this->_ic;
}

}

Создать объект

// Create tracking object
$tracking = new EcommerceTracking( array(
'ua'                => 'UA-XXXX',
'client_id'         => '10.0101.010.0101',
'transaction_id'    => 123,
'affiliation'       => 'Shop X',
'revenue'           => 100,
'shipping'          => 20,
'tax'               => 20,
));

// Add tracking items
foreach( $items as $item ) {
$tracking->addItem( new TrackingItem( 'Name', 34, 1, 'SKU001' ) );
}

Поэтому я не хочу устанавливать для элемента «ua», «client_id», «action_id »и« affiliation ». Я хочу, чтобы элемент наследовал это от объекта отслеживания.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]