PHP5 对象到 SOAP 服务器
PHP5 object to SOAP server
我刚刚使用大量 类 设计了一个 CMS。我的 CMS 是用 PHP 编写的。我希望向其中添加一个简单的 SOAP API。每个对象都有 getter 和 setter($obj->get_this()
和 $obj->set_this($value)
)。当然,所有getter和setter都是public方法。 object 中的所有其他内容至少受到保护,但主要是私有的。每个对象都有一个 get_all()
方法,将所有私有对象变量设置为一个 public 对象变量(例如:有一个私有 $this->pName
,一个 public $this->name
和 get_all()` 函数填充所有 public 变量)。
我梦想的 Soap 服务器将是尽可能少的代码,最可扩展的,使用 getter 和 setter 到 get/set 变量,我不希望重写 wsdl每次我必须添加一个函数/方法/变量。
我在 Google 上搜索过并在这里寻找一个简单的过程,但找不到 code/lib/process 简单且可扩展的过程。我查看了 nusoap,但使用 PHP4 兼容库似乎不是一个好的解决方案。
我错过了什么 ?有没有我遗漏的库/函数/方法/过程?
经过几天思考:
我找到了这个图书馆:https://github.com/piotrooo/wsdl-creator
它不符合我的需要,但不知何故......
我为我的对象的每个人做了一个 class,只是为了过滤我想要在 API 中可用或不可用的内容。
为了少写,我制作了 2 bash 代码来预生成所有代码:
对于 getter:
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 '} )
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 '} )
helper=$(echo $method | sed -e "s/set_//g" | sed -e "s/_/ /")
param=$(echo $j | awk -F'(' '{ printf '} | 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,那是我的下一个使命...
我刚刚使用大量 类 设计了一个 CMS。我的 CMS 是用 PHP 编写的。我希望向其中添加一个简单的 SOAP API。每个对象都有 getter 和 setter($obj->get_this()
和 $obj->set_this($value)
)。当然,所有getter和setter都是public方法。 object 中的所有其他内容至少受到保护,但主要是私有的。每个对象都有一个 get_all()
方法,将所有私有对象变量设置为一个 public 对象变量(例如:有一个私有 $this->pName
,一个 public $this->name
和 get_all()` 函数填充所有 public 变量)。
我梦想的 Soap 服务器将是尽可能少的代码,最可扩展的,使用 getter 和 setter 到 get/set 变量,我不希望重写 wsdl每次我必须添加一个函数/方法/变量。 我在 Google 上搜索过并在这里寻找一个简单的过程,但找不到 code/lib/process 简单且可扩展的过程。我查看了 nusoap,但使用 PHP4 兼容库似乎不是一个好的解决方案。 我错过了什么 ?有没有我遗漏的库/函数/方法/过程?
经过几天思考: 我找到了这个图书馆:https://github.com/piotrooo/wsdl-creator
它不符合我的需要,但不知何故......
我为我的对象的每个人做了一个 class,只是为了过滤我想要在 API 中可用或不可用的内容。
为了少写,我制作了 2 bash 代码来预生成所有代码: 对于 getter:
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 '} )
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 '} )
helper=$(echo $method | sed -e "s/set_//g" | sed -e "s/_/ /")
param=$(echo $j | awk -F'(' '{ printf '} | 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,那是我的下一个使命...