Como sysadmin, termino haciendo una programación ad-hoc simple de vez en cuando. Estoy tratando de aprender sobre la marcha, así que, en general, ¿hay algo en el siguiente código que te parezca una mala práctica o algo innecesario?Evitar el código duplicado (PHP)
Específicamente, las 3 sentencias if al final se sienten como si estuviera duplicando el código innecesariamente. ¿Hay alguna manera de acortarlo aún más sin exagerar con la complejidad?
<?php
define('TAKEN', 'Match: One');
define('AVAIL', 'Match: No Matches');
define('DATAMINE', 'Data mining count exceeded');
$ch = curl_init("http://co.za/cgi-bin/whois.sh?Domain=example");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
function search_whois($findit) {
global $output;
if (strpos($output, $findit) === false)
return false;
if (is_int(strpos($output, $findit)))
return true;
}
if (search_whois(TAKEN))
echo "Domain is taken.\n";
if (search_whois(AVAIL))
echo "Domain is available.\n";
if (search_whois(DATAMINE))
echo "Blocked for datamining, try again later.\n";
// var_dump($output);
?>
Me encanta ver a los desarrolladores realmente con ganas de mejorar su propio código y con ganas de hacer las cosas correctamente. ¡Te daré un +1 por eso! Como es tarde el viernes por la tarde, probablemente no soy la persona adecuada para validar el código de otra persona en este momento. Sin embargo, no puedo ver nada obviamente mal. Si los últimos tres if son mutuamente exclusivos, podrías usar if-else si en cambio, pero eso es quisquilloso. – kskjon
Como se menciona en el comentario anterior, se ejecutarán las 3 IF, si esto es necesario, entonces su código está bien, si en lugar de eso desea finalizar/salir después de cada si, o solo permitir que 1 de ellos se ejecute, utilice if/elseif/else etc ... –
Lo único que podría hacer diferente es hacer una clase en lugar de simplemente usar una función para que no tenga que usar 'global $ output'. Aparte de eso, creo que eres bastante sólido. – tplaner