2012-09-06 1 views
1

Pour mes amis les plus intelligents, j'ai googlé et essayé tout. Je suis sûr que c'est juste la fin de la nuit ne me laissant pas voir/comprendre le problème. Je devrais mentionner que je suis encore en train de passer à OOP de fonctionnel, et c'est la première fois que j'ai pu activer curl. :(Alors, ne hésitez pas à critiquer les mauvaises pratiques aussi ..PHP Classes et Curl

<?php 
class urlValidation 
{ 
    public $content; 
    public $validUrl; 
    public function __construct($validUrl) 
    { 
     $this->content = $content; 
     $this->validUrl = $validUrl; 
     $this->getContents(); 
    } 
    public function getContents() 
    { 
     $this->curlHandler = curl_init($this->validUrl); 
     curl_setopt($this->curlHandler, CURLOPT_NOBODY, false); 
     curl_setopt(CURLOPT_RETURNTRANSFER, false); //changing false to true is the answer! 
     $this->content = curl_exec($this->curlHandler); 
     curl_close($this->curlHandler); 
    } 
} 
?> 

appelé de

$suggestUrl = 'http://www.google.com'; 
$validate = new urlValidation($suggestedUrl); 

Pour tous le meilleur de moi, je ne peux pas comprendre pourquoi $ this-> impressions de contenu à . l'écran sans être appelé, je veux tout simplement que HTML retourné à stocker dans une variable et non retourné/imprimé/joint au document

+0

Montrez-nous comment avez-vous initialisez votre classe et appelez ses méthodes –

+0

Pourriez-vous s'il vous plaît préciser ce que signifie « impressions à l'écran sans être appelé » - qu'est-ce il imprime? Ainsi que vous avez instancié le nouvel objet de cette classe. En outre, vous définissez '$ this-> content = $ content' dans le constructeur, ce qui n'a pas beaucoup de sens - d'où vient le' $ content'? Et enfin, c'est une bonne pratique de s'en tenir aux conventions, alors pourquoi ne pas commencer le nom d'une classe avec une lettre majuscule. – Havelock

+0

@havelock Je veux dire comme lire le contenu du fichier et l'ajouter à la dom ... c'est comme si un écho $ this-> contenu se passe mais c'est PAS! –

Répondre

3

documentation PHP explique tout;).

curl_exec renvoie TRUE en cas de succès ou FALSE en cas d'échec. Toutefois, si l'option CURLOPT_RETURNTRANSFER est définie, le résultat sera renvoyé en cas de succès, FALSE en cas d'échec.

Alors avant $this->content = curl_exec($this->curlHandler); vous devez ajouter cette

curl_setopt($this->curlHandler, CURLOPT_RETURNTRANSFER, true); 
+0

Il retourne encore et imprime le code HTML à la deuxième page sans être appelé. :/lol Tout ce que je veux, c'est le HTML retourné sauvegardé dans une variable. –

+0

@JaredDrake 'Tout ce que je veux, c'est le HTML retourné sauvegardé dans une variable.' '$ This-> content = file_get_contents ('http://google.com');' aboutira le même? –

+0

@JaredDrake désolé, mon mauvais, j'ai oublié d'ajouter '$ this-> curlHandler' comme premier paramètre pour' curl_setopt', et l'option devrait être 'true'. Voir la réponse éditée. –