Ik heb een parent class die doormiddel van een private methode een andere child class aanmaakt. De child class extends de parent class.
Vervolgens voer ik in de child class een methode uit die gedefineerd wordt in de parent class. In die methode wordt een property gebruikt uit de parent class die in de __construct van de parent class wordt ingesteld op: $this->ch = curl_init();
Eerder genoemde methode (gedefineerd in de parent class) gebruikt $this->ch voor het uitvoeren van een aantal curl_exec's. Wanneer ik de methode echter probeer uit te voeren krijg ik de foutmelding dat $this->ch = NULL en dus !niet een resource voor curl is. Dit blijkt ook wanneer ik in de child class var_dump($this->ch); uitvoer.
Hoe kan ik de methode uit de parent class toch gewoon gebruiken in de child class?
parent::__construct uitvoeren in de child class is geen optie. Via een andere methode die in de __construct van de parent class wordt aangeroepen wordt namelijk de child class geladen. Oftewel, de child class wordt dan een tweede keer geïnitialiseerd en die ïnitialiseerd de child class weer enz., enz.
De $this->ch in de child class pas instellen op $this->ch = curl kan ook niet omdat in de parent class $this->ch al nodig is en $this->ch in de child class met deze curl_session moet draaien.
Hieronder nog even een (vereenvoudigde) weergave ter verduidelijking:
[size=120]parent.class.php[/size]
<?php
class Parent{
protected $ch;
function __construct(){
$this->ch = curl_init();
loadClass();
}
private function loadClass(){
include('apps/'.$_GET['app'].'/lib/class.php');
return new $_GET['app'];
}
public function curlGet($url){
curl_setop($this->ch, CURLOPT_URL, $url); // error child.class.php verwijs naar deze lijn
curl_setop($this->ch, CURLOPT_RETURNTRANSFER, true); // error child.class.php verwijs naar deze lijn
return(curl_exec($this->ch));
}
}
?>[size=120]child.class.php[/size]
<?php
class Child extends Parent{
function __construct(){
curlGet($url); // error: PHP Warning: curl_setopt() expects parameter 1 to be resource, null given in Parent.class.php on line 16 & 17
}
}
?>Ik hoop dat iemand me met bovenstaande vraag kan helpen.
Alvast bedankt voor jullie hulp en tijd,
Wilfred Dijksman