php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #29830 SoapServer::setClass() should not export non-public methods
Submitted: 2004-08-25 07:26 UTC Modified: 2004-08-26 14:26 UTC
From: davey@php.net Assigned: dmitry (profile)
Status: Closed Package: SOAP related
PHP Version: 5.0.1 OS: WinXP SP2
Private report: No CVE-ID: None
 [2004-08-25 07:26 UTC] davey@php.net
Description:
------------
SoapServer::setClass will export all class methods, including private and protected ones, this should not be the case as they should be used internally only.

Even better, would be to only export methods named in the supplied WSDL, but I think that would just take too long :)

- Davey

Reproduce code:
---------------
<?php

class hello_world {
   
    /**
     * Say Hello to Somebody
     *
     * @param string $to The person to say Hello to
     * @return string The greeting
     */ 
     
    public function hello($to)
    {
        return $this->constructMsg($to);
    }
    
    public function goodBye($to)
    {
        return "Goodbye $to";
    }
    
    /**
     * Construct Greeting
     *
     * @param string $to
     * @return string
     */
    
    private function constructMsg($to)
    {
        return 'Hello ' . $to;
    }    
}

$server = new SoapServer('HelloWorld.wsdl', array('trace' => 1));
$server->setClass('hello_world');

echo "This SOAP server can handle following functions: \n";
$functions = $server->getFunctions();
foreach($functions as $func) {
    echo $func . "\n";
}


?>

Expected result:
----------------
This SOAP server can handle following functions:
hello
goodBye

Actual result:
--------------
This SOAP server can handle following functions:
hello
goodBye
constructMsg

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-08-26 14:26 UTC] dmitry@php.net
Fixed in CVS (PHP_5_0 & HEAD)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 08:01:29 2024 UTC