2015-10-02 3 views
0

Я новичок в ООП. Я просто учился, и я должен использовать его, чтобы найти фактический/конечный URL-адрес ссылки, которая перенаправляется.Разрешено ли создавать объект одного класса внутри функции?

Class ABC { 
    public function getWebPage($url, $redirectcallback = null){ 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_NOBODY, false); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061024 BonEcho/2.0"); 

    $html = curl_exec($ch); 
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    if ($http_code == 301 || $http_code == 302) { 
     list($httpheader) = explode("\r\n\r\n", $html, 2); 
     $matches = array(); 
     preg_match('/(Location:|URI:)(.*?)\n/', $httpheader, $matches); 
     $nurl = trim(array_pop($matches)); 
     $url_parsed = parse_url($nurl); 
     if (isset($url_parsed)) { 
      if($redirectcallback){ // callback 
       $redirectcallback($nurl, $url); 
      } 
      $html = $this->getWebPage($nurl, $redirectcallback); 
     } 
    } 
    return $html; 
} 

} 

Вышеупомянутая функция внутри класса вызывает ту же функцию снова и снова, чтобы найти фактический url. Однако я уже вызываю класс в каком-то другом файле

$obj = new ABC; 
$url = "http://www.anrdoezrs.net/asd/?ak=123"; 
$someurl = $obj->getWebPage($url); 

Но это не работает. Пожалуйста, предложите.

+0

Поместите возвратную часть ** внутри ** функция хуг – Naruto

+0

К сожалению, это было внутри функции, я редактировал его. – Indication

+0

Ну в первую очередь, что в $ url и во-вторых, откуда эта волшебная переменная $ newurl? – Naruto

ответ

0
Class ABC { 
    public function xyz($url){ 
     $html = $this->xyz($url); 
     return $html; 
    } 
} 

В другом классе называют его

$obj = new ABC; 
$url = "Some value"; 
$someurl = $obj->xyz($url); 
+0

Могу ли я узнать причину понижения? Я отправил комментарий, когда вопрос не был отредактирован. И этот ответ идеально подходит к предыдущему вопросу. – sandeepsure

+0

Не ваша вина. Я опубликовал 3 действительных вопроса, и они оставили меня во всех из них. У них много знаний, но они не могут решить ни одной проблемы. По крайней мере, вы пробовали, поэтому я выдвигаю вас и создаю потерю. – Indication

+0

@OmPrakash Спасибо :) – sandeepsure

Смежные вопросы