Мне нужно переехать в ООП и пытаться понять это. Пока я сделал свой первый класс. Вот код. (Проблема с функцией SCURL() и возврата значений и доступ к нему правоВозвращаемые значения класса PHP и переменные установки
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........"
Ok так это то, как я называю класс
$data1 = new Curl("http://www.facebook.com");
$data1->sCURL();
var_dump($data1);
это дает мне выше результаты , Вот моя проблема, я хочу получить доступ только к «DATA».
$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 [ «данные»] и также, если бы вы что-то изменили из моего класса, чтобы сделать его лучше? И для моего понимания, почему это return $ data; в первом примере класс не работал. Я googled и googled, но не нашел ответа. Извините, я только что начал используя ООП до того, как я сделал огромный список функций.
UPDATE, когда я установил
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
Для ложной
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
я теперь могут получить доступ к данным
$ data1 [ 'данные'], но проблема как-то по-прежнему остается, $ data1 ['data'] отображается выше в конце, я получаю это:
Fatal error: Cannot use object of type CURL as array in * on line
им просто любопытно, почему я не могу получить доступ, если его установить true, если кто-нибудь может объяснить, что я был бы счастлив.
Спасибо за ваше время.
и
Рождеством ко всем :-)
Благодарим вас за ответ, приведенные выше работы теперь :-) о том, что геттер и сеттер, я как-то не понимаю его, для чего это хорошо и почему он должен быть. – user1015314