1 Star 0 Fork 19

释冰翼 / hprose-php

forked from Hprose / hprose-php 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Hprose for PHP



简介

Hprose 是高性能远程对象服务引擎(High Performance Remote Object Service Engine)的缩写。

它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。你只需要稍许的时间去学习,就能用它轻松构建跨语言跨平台的分布式应用系统了。

Hprose 支持众多编程语言,例如:

  • AAuto Quicker
  • ActionScript
  • ASP
  • C++
  • Dart
  • Delphi/Free Pascal
  • dotNET(C#, Visual Basic...)
  • Golang
  • Java
  • JavaScript
  • Node.js
  • Objective-C
  • Perl
  • PHP
  • Python
  • Ruby
  • ...

通过 Hprose,你就可以在这些语言之间方便高效的实现互通了。

本项目是 Hprose 的 PHP 语言版本实现。

安装

通过下载源码

下载地址

通过composer

{
    "require": {
        "hprose/hprose": "dev-master"
    }
}

使用

服务器

Hprose for PHP 使用起来很简单,你可以像这样来创建一个 Hprose 的 http 服务:

<?php
    require_once('Hprose.php');

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseHttpServer();
    $server->addFunction('hello');
    $server->start();

你也可以使用 HproseSwooleServer 来创建一个独立的 hprose 服务:

server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('http://0.0.0.0:8080/');
    $server->addFunction('hello');
    $server->start();

然后使用命令行来启动它:

php server.php

要使用 HproseSwooleServer, 你首先需要安装 swooleswoole 被支持的最低版本为 1.7.15.

HproseSwooleServer 不仅仅支持 http 服务器,还支持 tcp, unix 和 websocket 服务器。使用方法仅仅是创建时的 url 不同。例如:

tcp_server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('tcp://0.0.0.0:1234');
    $server->addFunction('hello');
    $server->start();

unix_server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('unix:/tmp/my.sock');
    $server->addFunction('hello');
    $server->start();

websocket_server.php

<?php
    require_once("Hprose.php");

    function hello($name) {
        return 'Hello ' . $name;
    }

    $server = new HproseSwooleServer('ws://0.0.0.0:8000/');
    $server->addFunction('hello');
    $server->start();

另外,WebSocket 服务器同时也是 http 服务器,所以既可以用 WebSocket 客户端访问,也可以用 http 客户端访问。

客户端

然后你可以创建一个 Hprose 的 http 客户端来调用它了,就像这样:

<?php
    require_once("Hprose.php");
    $client = new HproseHttpClient('http://127.0.0.1/server.php');
    echo $client->hello('World');
?>

Hprose 也提供了 HproseSwooleClient,它目前支持 http,tcp 和 unix 三种方式的调用。

<?php
    require_once("Hprose.php");
    $client = new HproseSwooleClient('tcp://0.0.0.0:1234');
    echo $client->hello('World');
?>

新的版本现在也支持异步并发调用,例如:

<?php
    require_once("Hprose.php");
    $client = new HproseSwooleClient('tcp://0.0.0.0:1234');
    $client->hello('World', function() {
        echo "ok\r\n";
    });
    $client->hello('World 1', function($result) {
        echo $result . "\r\n";
    });
    $client->hello('World 2', function($result, $args) {
        echo $result . "\r\n";
    });
    $client->hello('World 3', function($result, $args, $error) {
        echo $result . "\r\n";
    });
?>

异步调用的回调函数支持 0 - 3 个参数。它们分别表示:

参数 解释
结果 就是服务器端的返回结果,如果没有结果则为 null。
调用参数 是一个包含了调用参数的数组,如果调用没有参数,则为 0 个元素的数组。
错误 一个 Exception 对象,如果没有错误则为 null。

异常处理

如果服务器端发生错误,或者服务器端的函数或方法抛出异常,它将被发送给客户端,客户端会以异常的形式抛出,你可以使用 try 语句捕获它。异步调用时,服务器端返回的异常不会被抛出,而是传递给回调函数的第三个参数。

The MIT License (MIT) Copyright (c) 2008-2015 http://hprose.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Hprose 全名是高性能远程对象服务引擎。 它是一个新型的轻量级跨语言跨平台面向对象的高性能远程动态通讯中间件。它不但易学易用,而且功能强大。本项目是 Hprose 的 PHP 版本实现。 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/chenwenbin_admin/hprose-php.git
git@gitee.com:chenwenbin_admin/hprose-php.git
chenwenbin_admin
hprose-php
hprose-php
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891