Skip to content
This repository was archived by the owner on Jan 10, 2022. It is now read-only.
/ xmpp Public archive

Library for XMPP protocol connections (Jabber) for PHP

License

Notifications You must be signed in to change notification settings

fabiang/xmpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d5fe3ac · May 23, 2017
May 23, 2017
May 23, 2017
May 23, 2017
May 23, 2017
Nov 13, 2014
May 23, 2017
May 23, 2017
May 23, 2017
May 23, 2017
May 23, 2017
May 23, 2017
Nov 13, 2014
May 23, 2017

Repository files navigation

fabiang/xmpp

Library for XMPP protocol connections (Jabber) for PHP.

License Latest Stable Version Total Downloads Dependency Status Build Status Coverage Status Scrutinizer Quality Score SensioLabsInsight

SYSTEM REQUIREMENTS

  • PHP minimum 5.6 or minimum 7.0
  • psr/log
  • (optional) psr/log-implementation - like monolog/monolog for logging

INSTALLATION

New to Composer? Read the introduction. Add the following to your composer file:

composer require fabiang/xmpp

DOCUMENTATION

This library uses an object to hold options:

use Fabiang\Xmpp\Options;
$options = new Options($address);
$options->setUsername($username)
    ->setPassword($password);

The server address must be in the format tcp://myjabber.com:5222.
If the server supports TLS the connection will automatically be encrypted.

You can also pass a PSR-2-compatible object to the options object:

$options->setLogger($logger)

The client manages the connection to the Jabber server and requires the options object:

use Fabiang\Xmpp\Client;
$client = new Client($options);
// optional connect manually
$client->connect();

For sending data you just need to pass a object that implements Fabiang\Xmpp\Protocol\ProtocolImplementationInterface:

use Fabiang\Xmpp\Protocol\Roster;
use Fabiang\Xmpp\Protocol\Presence;
use Fabiang\Xmpp\Protocol\Message;

// fetch roster list; users and their groups
$client->send(new Roster);
// set status to online
$client->send(new Presence);

// send a message to another user
$message = new Message;
$message->setMessage('test')
    ->setTo('[email protected]')
$client->send($message);

// join a channel
$channel = new Presence;
$channel->setTo('[email protected]')
    ->setPassword('channelpassword')
    ->setNickName('mynick');
$client->send($channel);

// send a message to the above channel
$message = new Message;
$message->setMessage('test')
    ->setTo('[email protected]')
    ->setType(Message::TYPE_GROUPCHAT);
$client->send($message);

After all you should disconnect:

$client->disconnect();

DEVELOPING

If you like this library and you want to contribute, make sure the unit-tests and integration tests are running. Composer will help you to install the right version of PHPUnit and Behat.

composer install

After that:

./vendor/bin/phpunit
./vendor/bin/behat

New features should always tested with Behat.

LICENSE

BSD-2-Clause. See the LICENSE.

TODO

  • Better integration of channels
  • Factory method for server addresses
  • improve documentation