fabiang/xmpp

Library for XMPP protocol (Jabber) connections

Installs: 6 560

Dependents: 1

Stars: 41

Watchers: 12

Forks: 11

Open Issues: 10

Language: PHP

0.6.1 2014-11-20 08:59 UTC

README

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

Library for XMPP protocol connections (Jabber) for PHP.

SYSTEM REQUIREMENTS

  • PHP >= 5.3.3
  • psr/log
  • psr/log-implementation - like monolog/monolog for logging (optional)

INSTALLATION

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

{
    "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('nickname@myjabber.com')
$client->send($message);

// join a channel
$channel = new Presence;
$channel->setTo('channelname@conference.myjabber.com')
    ->setNickName('mynick');
$client->send($channel);

// send a message to the above channel
$message = new Message;
$message->setMessage('test')
    ->setTo('channelname@conference.myjabber.com')
    ->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 --dev

After that:

./vendor/bin/phpunit -c tests
./vendor/bin/behat --config=tests/behat.yml --strict

New features should allways tested with Behat.

LICENSE

BSD-2-Clause. See the LICENSE.

TODO

  • Better integration of channels
  • Factory method for server addresses
  • Add support von vCard
  • improve documentation