Files
kopalnia_2014/webservice/lib/class.phpwsdlhash.php
T
2026-09-03 11:24:19 +02:00

181 lines
4.4 KiB
PHP

<?php
/*
PhpWsdl - Generate WSDL from PHP
Copyright (C) 2011 Andreas Zimmermann, wan24.de
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, see <http://www.gnu.org/licenses/>.
*/
if(basename($_SERVER['SCRIPT_FILENAME'])==basename(__FILE__))
exit;
// This is my solution to swap hash arrays between client/server. The receiver
// has to rebuild the hash object in the way his programming language supports
// hash arrays. It's just an example solution. To use the types defined here,
// you have to include this file in your source using "require". This file has
// also to be in the list of files that are parsed by PhpWsdl.
//
// A sample unserialized PHP hash array (use the "Serialize" method on this):
//
// Array(
// 'a' => 'Value of a',
// 'b' => 'Value of b'
// )
//
// The resulting serialized array (return this):
//
// Array(
// PhpWsdlHash(
// 'key' => 'a',
// 'value' => 'Value of a'
// ),
// PhpWsdlHash(
// 'key' => 'b',
// 'value' => 'Value of b'
// )
// )
//
// The received serialized array (use the "Deserialize" method on this):
//
// Array(
// object(
// 'key' => 'a',
// 'value' => 'Value of a'
// ),
// object(
// 'key' => 'b',
// 'value' => 'Value of b'
// )
// )
//
// The value type must be unique within an hash array. You can return prepared
// types like StringHashArray, or you define your own ones. To serialize an
// hash array to the target type, use the PhpWsdlHashArrayBuilder class:
//
// return PhpWsdlHashArrayBuilder::Serialize($yourHashVariable);
//
// To deserialize an received object:
//
// $yourHashVariable=PhpWsdlHashArrayBuilder::Deserialize($receivedHashVariable);
//
// Tip: I prefer converting hashes into an INI formatted string. The string
// type is primitive, but it can contain complex information. In nearly every
// programming language you can work with the INI format with predefined
// classes - or it's very easy to write your own.
/**
* Key/Value pair types for string value type
*
* @pw_element string $key Key
* @pw_element string $value Value
* @pw_complex StringHash String hash array type
*/
/**
* @pw_complex StringHashArray Array of string hash array types
*/
/**
* Key/Value pair types for int value type
*
* @pw_element string $key Key
* @pw_element int $value Value
* @pw_complex IntHash Int hash array type
*/
/**
* @pw_complex IntHashArray Array of int hash array types
*/
/**
* Key/Value pair types for boolean value type
*
* @pw_element string $key Key
* @pw_element boolean $value Value
* @pw_complex BooleanHash Boolean hash array type
*/
/**
* @pw_complex BooleanHashArray Array of boolean hash array types
*/
/**
* This class contains static methods to (de)serialize hash arrays
*
* @author Andreas Zimmermann, wan24.de
*/
class PhpWsdlHashArrayBuilder{
/**
* Serialize an hash array
*
* @param array $hash The PHP hash array
* @return PhpWsdlHash[] The serialized array
*/
public static function Serialize($hash){
if(is_null($hash))
return null;
$res=Array();
$keys=array_keys($hash);
$i=-1;
$len=sizeof($keys);
while(++$i<$len)
$res[]=new PhpWsdlHash($keys[$i],$hash[$keys[$i]]);
return $res;
}
/**
* Deserialize an hash array
*
* @param array $arr The serialized array
* @return array The deserialized PHP hash array
*/
public static function Deserialize($arr){
if(is_null($arr))
return null;
$res=Array();
$i=-1;
$len=sizeof($arr);
while(++$i<$len)
$res[$arr[$i]->Key]=$arr[$i]->Value;
return $res;
}
}
/**
* This class simply holds a key/value pair
*
* @author Andreas Zimmermann, wan24.de
*/
class PhpWsdlHash{
/**
* The key
*
* @var string
*/
public $Key;
/**
* The value
*
* @var mixed
*/
public $Value;
/**
* Constructor
*
* @ignore
* @param string $key The key
* @param mixed $value The value
*/
public function PhpWsdlHash($key,$value){
$this->Key=$key;
$this->Value=$value;
}
}