sca-php-examples-php-calling-6

  • Examples
  • Calling another Service Component

  • Calling another Service Component
  • Calling another Service Component

    Calling another Service Component

    The ConvertedStockQuote example also calls the
    proxies for the two components to which it refers.

    Example #1 Calling services

    <?php
    $quote  
    $this->stock_quote->getQuote($ticker);
    $rate   $this->exchange_rate->getRate($currency);
    ?>

    The call to the StockQuote service is a call to a
    local service; the call to the ExchangeRate service is a call to a
    remote service. Note that the way the call is made looks the same
    regardless of whether the call is to a local service or a remote
    one.

    The proxies which have been injected ensure that
    the way calls to components look and behave are the same way
    regardless of whether they are to a local or remote service, so
    that components are not sensitive to whether a call is to a local
    or a remote service. For example, the proxy for a local service
    takes copies of the arguments and passes only those copies, to
    ensure that calls are made to be pass-by-value, as they would be
    for a remote call. Also, the proxy for a remote service takes the
    arguments from a positional parameter list and ensures they are
    packaged properly in a SOAP request and converted back to a
    positional parameter list at the far end.

    In the example above, the $ticker and $currency are clearly
    PHP scalar types. Components can pass the PHP scalar types string,
    integer, float and boolean, but data structures on service calls
    are always passed as Service Data Objects (SDOs). A later section
    describes how a component can create an SDO to pass on a local or
    Web service call, or how a component can create an SDO to return.
    The PHP SDO project documentation describes how to work with the
    SDO APIs (see the SDO
    pages
    ).