Comme je suis en train de développer un module, j’ai regardé ce que font les autres pour avoir un exemple de personnes expérimentées avec Dolibarr.
Voici la fonction que j’ai vue :
public function getContents($url){
$this->data = false;
$res = @file_get_contents($url);
$this->http_response_header = $http_response_header;
$this->TResponseHeader = self::parseHeaders($http_response_header);
if($res !== false){
$this->data = $res;
}
return $this->data;
}
Je pense qu’il y a un problème ici.
Je regarde et je suis la logique de la variable : $this->data
et ce qui est retourné.
Pourquoi s’embêter à tester $res
pour tenter de retourner une valeur non nulle.
Idée de correction numéro 1 :
Voici donc la même fonction en plus simple ($this->data
et la gestion des codes de retour ne sert à rien dans le reste du code de toute façon) :
public function getContents($url){
return @file_get_contents($url);
}
Donc finalement, beaucoup de bruit pour rien avec une fonction inutile en fin de compte.
Idée de correction numéro 2 :
Ici, je montre un exemple simple qui peut gérer deux situations en fonction de la configuration de PHP. Je ne gère pas le code de retour, ça ne sert à rien, je n’en ai pas besoin.
public function getContents($url, $alt_url)
{
global $langs;
// PHP method
if (\filter_var(\ini_get('allow_url_fopen'), \FILTER_VALIDATE_BOOLEAN)) {
$contents = @file_get_contents($url);
} elseif (function_exists('curl_version')) {
// CURL method
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
} else {
// Default contents
$contents = '<div class="error">'.$langs->trans('URLError', $alt_url).'</div>';
}
return $contents;
}
Oui mais la fonction core/lib/geturl.lib.php :: getURLContent ?
Sans être ingénieur à la NASA pour comprendre le code on a dit