Ich bin sehr neu zu OOP und ich versuche, meinen Konstruktor einmal aufzurufen.PHP Konstruktor einmal aufrufen
Ich habe eine Klasse mit einem Konstruktor, die einen Guzzle-Client haben und es auch auf einer Website anmelden. Jetzt habe ich 2 andere Klassen: Bestellungen und Reihenfolge, die die Klasse mit dem Konstruktor erweitert (ich bin mir nicht sicher, ob ich es richtig mache), ich tat dies, weil ich dachte, dass dies mein Konstruktor einmal aufrufen wird, aber es schafft immer noch mehrere Clients
Mein Code sieht wie folgt aus:
RequestController.php: (Die constructer mit das macht einen guzzle Client)
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();
}
}
Wenn mir jemand einen Rat geben könnte ich es wirklich schätzen würde, Danke !!