私は非常にOOPに新しいと私は一度私のコンストラクタを呼び出すしようとしています。PHPコールコンストラクタ一度
私はGuzzleクライアントを持つコンストラクタを持つクラスを持っており、Webサイトにもログインしています。今私は2つの他のクラスがあります:注文とコンストラクタでクラスを拡張している注文(私はそれを右にやっているかどうかはわかりません)、これは私がこれは私のコンストラクタを一度呼び出すと思ったので、これを行ったが、依然として複数のクライアントを作成する
このような私のコードを見て:
RequestController.php:(それと建設業者ががつがつ食うクライアントを作る)
namespace App\Http\Controllers\Scraper;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
class RequestController extends Controller
{
public static $_instance = null;
public $client;
public function __construct(){
$headers = [
'user-Agent' => '',
'Host' => 'orders.example.com',
'Origin' => 'https://orders.example.com',
'Referer' => 'https://orders.example.com',
];
$form_params = [
'form_params' => [
'username' => env('USERNAME'),
'password' => env('PASSWORD'),
'login' => 'true',
'language' => 'en'
]
];
$this->client = new Client([
'headers' => $headers,
'cookies' => new \GuzzleHttp\Cookie\CookieJar
]);
echo 'new client has created <br>';
$this->client->post('https://orders.example.com/', $form_params);
return $this->client;
}
}
OrdersController.php:
<?php
namespace App\Http\Controllers\Scraper;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Scraper\RequestController;
use App\Http\Controllers\Scraper\OrderController;
use Symfony\Component\DomCrawler\Crawler;
// use GuzzleHttp\Client;
class OrdersController extends RequestController
{
public $order_ids = [];
public function orders(){
$response = $this->client->post('https://orders.example.com/orders/orders');
$crawler = new Crawler((String) $response->getBody());
$order_ids = $crawler->filterXPath('//tbody[contains(@class, "wide")]')->extract(['_text', 'rel']);
foreach($order_ids as $order_id){
$order = new OrderController();
$order->order(substr($order_id[1], 2));
}
}
}
OrderController.php:
<?php
namespace App\Http\Controllers\Scraper;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Scraper\RequestController;
class OrderController extends RequestController
{
private $_delivery_time,
$_order_price,
$_delivery_price,
$_total_price,
$_pay_option;
public function order($order_id){
$details = [
'form_params' => [
'id' => $order_id
]
];
$response = $this->client->post('https://orders.example.com/orders/details', $details);
// echo (string) $response->getBody();
// die();
}
}
誰かが私に私はそれを本当に感謝いくつかのアドバイスを与えることができる場合は、ありがとう!ドキュメントを1として