Я хотел перейти на ООП и пытаться понять это.Пока я сделал свой первый класс.Вот кодекс.(Проблема в функции sCURL () и возвращаемых значениях и доступе к ней правильно.
class CURL {
public $url;
private $header = false; // DISPLAY HEADERS (FALSE OR TRUE)
private $follow = true; // FOLLOW REDIRCETS (FALSE OR TRUE)
private $useragent = "Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1)"; // SET USER AGENT e.g. "Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1)"
private $referer = "http://www.google.com"; // SET REFERER e.g. http://www.google.com
private $ssl = false; // If set false (it accpets any ssl) should false
private $ctimeout = 5; // Timeout for connect in SECs when curl does next url
private $timeout = 60; // Timeout of retriving page in SECs when curl does next url
public function setHeader($header) {
$this->header = $header;
}
public function setFollow($follow) {
$this->follow = $follow;
}
public function setUseragent($useragent) {
$this->useragent = $useragent;
}
public function setReferer($referer) {
$this->referer = $referer;
}
public function setSsl($ssl) {
$this->ssl = $ssl;
}
public function setCtimeout($ctimeout) {
$this->ctimeout = $ctimeout;
}
public function setTimeout($timeout) {
$this->timeout = $timeout;
}
public function __construct($url) {
$this->url = $url;
}
public function sCURL() {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_HEADER, $this->header);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $this->follow);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $this->useragent);
curl_setopt($ch, CURLOPT_REFERER, $this->referer);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $this->ssl);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->ctimeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
}
, и вот результаты:
object(CURL)#1 (9) {
["url"]=>
string(23) "http://www.facebook.com"
["header:private"]=>
bool(false)
["follow:private"]=>
bool(true)
["useragent:private"]=>
string(49) "Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1)"
["referer:private"]=>
string(21) "http://www.google.com"
["ssl:private"]=>
bool(false)
["ctimeout:private"]=>
int(5)
["timeout:private"]=>
int(60)
["data"]=>
NULL
}
как выможет видеть "данные" = NULL.
, чем я заменил этот код мира
$data = curl_exec($ch);
curl_close($ch);
return $data;
на это:
$this->data = curl_exec($ch);
curl_close($ch);
return $this->data;
и теперь это результаты (Рабочая):
object(CURL)#1 (9) {
["url"]=>
string(23) "http://www.facebook.com"
["header:private"]=>
bool(false)
["follow:private"]=>
bool(true)
["useragent:private"]=>
string(49) "Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1)"
["referer:private"]=>
string(21) "http://www.google.com"
["ssl:private"]=>
bool(false)
["ctimeout:private"]=>
int(5)
["timeout:private"]=>
int(60)
["data"]=>
string(33320) "<!DOCTYPE html>.........STRIPPED OUTBUT THATS WHAT I WANTED........"
Хорошо, вот как я называю класс
$data1 = new Curl("http://www.facebook.com");
$data1->sCURL();
var_dump($data1);
, это дает мне приведенные выше результаты. Вот моя проблема, я хочу получить доступ только к «ДАННЫМ».
$data1 = new Curl("http://www.facebook.com");
$data1->sCURL();
var_dump($data1['data']);
если попытаться получить доступ к ключевым «данным», я получаю эту ошибку
Fatal error: Cannot use object of type CURL as array in * on line 10
Итак, как я могу получить доступ к данным, прямой (массив $ data1 ['data '] , а также измените ли вы что-нибудь из моего класса, чтобы сделать его лучше? И для моего понимания, почему это вернуло $ data; в первом примере класса не сработало. Я гуглил иГуглил, но не нашел ответа. Извините, я только начал использовать ООП, прежде чем сделал огромный список функций.
ОБНОВЛЕНИЕ, когда я установил
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
в false
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
теперь я могу получить доступ к данным
$ data1 ['data'] , НО проблема как-то остается, $ data1 ['data'] отображаетсявыше в конце я получаю это:
Fatal error: Cannot use object of type CURL as array in * on line
мне просто любопытно, почему я не могу получить доступ, если он установлен в true, если кто-то может объяснить, что я был бы счастлив.
Спасибо за ваше время.
и
С Рождеством Христовым всем: -)