3
I have a class that connects to Windows machines. I’m making it a little more generic so I can repurpose it to other systems.
Soon I was able to identify four methods "generic":
- connect
- status
- message
- execute
With this, I set up a class and an interface, but my question is the following: In the scenario below, it is better to use an abstract class, or an interface is more than enough?
Connection class:
class Windows implements Conector
{
/**
* Armazena um apontamento externo para um recurso
*
* @access private
* @var object
*/
private static $conexao;
/**
* Armazena a(s) mensagens de erro
*
* @access private
* @var string
*/
private static $mensagemErro;
/**
* Método de conexão
*
* @param string $host
* @param string $usuario
* @param string $senha
* @param int $porta
* @param int $timeout
* @return void
*/
public static function conectar($host, $usuario = null, $senha = null, $porta = 135, $timeout = 10)
{
try
{
/**
* Método utilizado para testar conectividade com o host alvo
*
* @param string $host
* @param string $porta
* @param int $errno valor de sistema
* @param string $errstr mensagem de sistema
* @param int $timeout tempo máximo a esperar por uma tentativa de conexão via socket
*/
if (!@fsockopen($host, $porta, $errno, $errstr, $timeout))
{
throw new Exception("Erro ({$errno}): Time Out ao chamar o host <b>{$host}</b>!");
}
//...
} catch (Exception $e) {
self::$mensagemErro = $e->getMessage();
}
}
public static function status()
{
return (self::$conexao !== NULL) ? TRUE : FALSE;
}
public static function mensagemErro()
{
return self::$mensagemErro;
}
public static function executar($acao)
{
try
{
if (!self::$conexao)
{
throw new Exception("Erro: É necessário abrir uma conexão antes de tentar executar qualquer comando!");
}
// @see http://php.net/manual/en/ref.com.php
return self::$conexao->ExecQuery($query);
}
catch (Exception $e)
{
return $e->getMessage();
}
}
}
Interface:
interface Conector
{
/**
* Método de conexão para máquinas Windows
*
* @param string $host
* @param string $usuario
* @param string $senha
* @param int $porta
* @param int $timeout
* @return void
*/
public static function conectar($host, $usuario = null, $senha = null, $porta = 135, $timeout = 10);
public static function status();
public static function mensagemErro();
public static function executar($acao);
}
Thanks @bigown. I’ve moved up the project: https://github.com/crphp
– Fábio Jânio