PHP에서는 인터페이스 또는 추상 클래스를 사용한 적이 없지만 비슷한 객체 (이 경우에는 네트워크 스위치)를 지원하지만 더 많은 기능을 추가하고자하는 시점에 이르렀습니다. 미래. SSH (PHPSecLib)를 통해 그들과 통신하고 상호 작용이 다른 경우 실제 방법은 동일합니다.인터페이스 및 추상 클래스 이해
내 경우에는 상수, 개인 변수, 연결 함수 및 생성자/소멸자를 구현하는 추상 클래스는 적절할 것이라고 생각합니다. 확장 클래스는 인터페이스를 템플릿으로 사용하지만 각각의 확장 클래스는 여전히 그들 사이에 같은 메소드를 다시 구현할 것이다.
추상적 인 클래스가이 시나리오로 나아갈 수있는 방법이라고 생각하면 맞습니까? 확장 클래스에 의해 오버라이드되는 추상 클래스에 빈 메소드를 배치해야합니까? 또는 확장 클래스가 Abstract 클래스에없는 메소드를 가질 수 있습니까?
예 :
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . '/home/devicepo/public_html/include/PHPSecLib');
include('Net/SSH2.php');
include('File/ANSI.php');
abstract class Switch
{
const STATUS_UNKNOWN = "-1";
const STATUS_OFFLINE = "0";
const STATUS_ONLINE = "1";
public $conn;
private $_server;
private $_username;
private $_password;
private $_bashshell;
public function __construct($server, $username, $password)
{
if (!$server)
die("Switch configuration not Defined");
$this->_server = $server;
$this->_username = $username;
$this->_password = $password;
}
public function connect()
{
// Establish new SSH2 Connection
$this->conn = new Net_SSH2($this->_server, 22);
if(!$this->conn->login($this->_username, $this->_password))
{
die("Failed to connect to Switch: " . $this->_server);
}
}
public function enable_port($port)
{
// Define in extended classes
}
public function disable_port($port)
{
// Define in extended classes
}
}
?>