AdsHandler.php 1023 Bytes
<?php
namespace App\Service\Handlers;

use App\Service\Contract\API;
use App\Service\Contract\APIRequest;

class AdsHandler{
    protected $request;
    protected $response;

    protected function __construct(APIRequest $request = null){
        $this->request = $request;
    }

    public static function getInstance(APIRequest $request = null){
        switch ($request->getApi()){
            case API::YANDEX:
                return new DirectHandler($request);
        }
        return new self($request);
    }

    public function handle($response){

        $this->parse($response);
        //постраничная выбрка
        if ($this->limited($response)){
            $this->request->next($this->limited());
            dispatch( new ProcessCallLimitedAPI($this->request));
        }
        $this->request->handle($this->response);
    }

    protected function limited($response){
        return false;
    }

    protected function parse($response){
        $this->response = $response;
    }
}