前端之家收集整理的这篇文章主要介绍了
php 的IRC API库的简单示例,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对一个
PHP编写的IRC API库感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!
<?PHP
/**
* 一个PHP编写的IRC API库
*
* Mark的IRC API库
*
* 格式化发送到IRC网络的数据。 这个库无法处理
* 实际连接到IRC服务器或解析IRC服务器输出。
*
* raw_send方法可用于以XML格式将数据发送到IRC
* 要么不标准,要么尚未实施。 我知道还有很多
* 实施,我计划随着时间的推移这样做。
*
* @param
* @author 网: jb51.cc
*
**/
class IRC
{
/**
* Library version
*
* @access protected
* @var string
*/
protected $_version = '1.0.0';
/**
* Connection socket
*
* @access protected
* @var object
*/
protected $_socket;
/**
* Constructor
*
* configures the class for use
*
* @access public
* @param object
* @return void
*/
public function __construct($socket)
{
$this->_socket = $socket;
}
/**
* version
*
* Reports the libraries version
*
* @access public
* @return string
*/
public function version()
{
return $this->_version;
}
/**
* say
*
* send a message to the target
*
* @access public
* @param string $target
* @param string $message
* @return void
*/
public function say($target,$message)
{
$data = "PRIVMSG {$target} :{$message}";
$this->raw_send($data);
}
/**
* emote
*
* send an emote to the target ( equiv to IRC client /me does something )
*
* @access public
* @param string $target
* @param string $message
* @return void
*/
public function emote($target,$message)
{
$data = chr(1)."ACTION {$message}".chr(1);
$this->say($target,$data);
}
/**
* ctcp
*
* send a ctcp to the target
*
* @access public
* @param string $target
* @param string $message
* @return void
*/
public function ctcp($target,$message)
{
$data = chr(1).$message.chr(1);
$this->say($target,$data);
}
/**
* notice
*
* send a notice to the target
*
* @access public
* @param string $target
* @param string $message
* @return void
*/
public function notice($target,$message)
{
$data = "NOTICE {$target} :{$message}";
$this->raw_send($data);
}
/**
* set_nick
*
* change user nick name
*
* @access public
* @param string
* @return void
*/
public function set_nick($nick)
{
$data = "NICK {$nick}";
$this->raw_send($data);
}
/**
* set_user
*
* prepare user ident string
*
* @access public
* @param string
* @return void
*/
public function set_user($nick)
{
$data = "USER $nick $nick $nick $nick :$nick";
$this->raw_send($data);
}
/**
* send_pass
*
* Identify with nickserv
*
* @access public
* @param string
* @return void
*/
public function send_pass($password)
{
$this->say('nickserv',"IDENTIFY {$password}");
}
/**
* disconnect
*
* Terminates IRC connection. Does not terminate reset process in the case
* you have implemented a reconnect function
*
* @access public
* @param string|null
* @return void
*/
public function disconnect($message = NULL)
{
$data = ($message !== NULL) ? "QUIT :{$message}" : "QUIT";
$this->raw_send($data);
}
/**
* enter_channel
*
* enter an IRC channel
*
* @access public
* @param string
* @return void
*/
public function enter_channel($channel)
{
$data = ($channel[0] == '#') ? "JOIN {$channel}" : "JOIN #{$channel}";
$this->raw_send($data);
}
/**
* leave_channel
*
* leaves an IRC channel
*
* @access public
* @param string
* @return void
*/
public function leave_channel($channel)
{
$data = ($channel[0] == '#') ? "PART {$channel}" : "PART #{$channel}";
$this->raw_send($data);
}
/**
* raw_send
*
* Sends raw commands to the IRC server. I left it a public function for
* hackability reasons. Makes it easier to add custom commands for
* non-standard servers,or to test new features without having to edit
* the class directly every time. Of course you could always just extend
* the class.
*
* @access public
* @return void
*/
public function raw_send($data)
{
fwrite($this->_socket,$data."\n");
}
}
/*** 来自编程之家 jb51.cc(jb51.cc) ***/