PHP5对象到SOAP服务器

时间:2015-03-29 22:57:53

标签: php soap

我只是使用大量课程设计CMS。我的CMS是用PHP编写的。我希望为它添加一个简单的SOAP API。每个对象都有getter和setter($obj->get_this()$obj->set_this($value))。当然,所有的getter和setter都是公共方法。对象中的所有其他东西至少受到保护,但主要是私有的。每个对象都有一个get_all()方法,将所有私有对象变量设置为公共对象变量(例如:有一个私有$this->pName,一个公共$this->name和get_all()`函数填充所有公共变量)。

我梦寐以求的Soap服务器可能是代码最少,可扩展性最高,使用getter和setter来获取/设置变量,我希望每次添加函数/方法/变量时都不要重写wsdl 。 我用Google搜索过它并在这里查看一个简单的过程,但无法找到简单且可扩展的代码/库/进程。我查看了nusoap,但使用PHP4兼容的lib似乎不是一个好的解决方案。 我错过了什么 ?我错过了一些lib / function / method / process吗?

1 个答案:

答案 0 :(得分:0)

经过几天的思考: 我找到了这个库:https://github.com/piotrooo/wsdl-creator

它并没有满足我的需求,但不知何故......

我为我的每个人创建了一个课程,只是为了过滤我想要在API中提供的内容。

为了少写,我制作了2个bash代码来预先生成所有代码: 对于吸气者:

for j in $(for i in $(cat myclass.class.php | grep public | egrep 'get_') ; 
do 
    echo $i | grep -v public | grep -v function  
done ) 
do  
    method=$(echo $j | awk -F'(' '{ printf $1'} )
    helper=$(echo $method | sed -e "s/get_//g" | sed -e "s/_/ /")
    param=$(echo $method | sed -e "s/get_//g" )
    echo '/**'; 
    echo '* @desc Get '$helper; 
    echo '* @param int $id';  
    echo '* @return string $'$param; 
    echo '*/' ; 
    echo 'public function '$method'($id)'; 
    echo '{'; 
    echo '    $this->load($id);'; 
    echo '    return $this->obj->'$j';' ;  
    echo '}' ; 
done

对于二传手:

for j in $(for i in $(cat myclass.class.php | grep public | egrep 'set_') ; 
do 
    echo $i | grep -v public | grep -v function 
done ) 
do  
    method=$(echo $j | awk -F'(' '{ printf $1'} )
    helper=$(echo $method | sed -e "s/set_//g" | sed -e "s/_/ /")
    param=$(echo $j | awk -F'(' '{ printf $2'} | sed -e "s/)$//g")
    echo '/**'; 
    echo '* @desc Set '$helper; 
    echo '* @param int $id';  
    echo '* @param string '$param; 
    echo '* @return bool $res'; 
    echo '*/' ; 
    echo 'public function '$method'($id,'$param')'; 
    echo '{'; 
    echo '    $this->load($id);'; 
    echo '    return $this->obj->'$j';' ;  
    echo '}' ; 
done

这些bash代码供生产使用,但它们可以帮助减少编写。

关于REST,这是我的下一个任务......