[尝试使用zend-soap时找不到

问题描述 投票:0回答:1

我正在尝试使用zendframework/zend-soap库在PHP中编写SOAP服务器。这是我的目录结构:

|- app/
    |- mySoapService.php
|- composer.json
|- composer.lock
|- vendor/

这是composer.json的内容:

{
    "name": "my_soap_service",
    "description": "This package is implementing a SOAP service.",
    "type": "project",
    "require": {
        "zendframework/zend-soap": "^2.8"
    },
    "require-dev": {
    }
}

我在终端中输入了以下命令:

zeinab: ~/my_soap_server$ composer install
PHP Warning:  Module 'soap' already loaded in Unknown on line 0
PHP Warning:  Module 'soap' already loaded in Unknown on line 0
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 10 installs, 0 updates, 0 removals
  - Installing psr/container (1.0.0): Loading from cache
  - Installing container-interop/container-interop (1.2.0): Loading from cache
  - Installing zendframework/zend-stdlib (3.2.1): Loading from cache
  - Installing zendframework/zend-validator (2.12.2): Downloading (100%)         
  - Installing zendframework/zend-escaper (2.6.1): Downloading (100%)         
  - Installing zendframework/zend-uri (2.7.1): Downloading (100%)         
  - Installing zendframework/zend-eventmanager (3.2.1): Loading from cache
  - Installing zendframework/zend-code (3.4.1): Downloading (100%)         
  - Installing zendframework/zend-server (2.8.1): Downloading (100%)         
  - Installing zendframework/zend-soap (2.8.0): Downloading (100%)         
zendframework/zend-validator suggests installing psr/http-message (psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators)
zendframework/zend-validator suggests installing zendframework/zend-db (Zend\Db component, required by the (No)RecordExists validator)
zendframework/zend-validator suggests installing zendframework/zend-filter (Zend\Filter component, required by the Digits validator)
zendframework/zend-validator suggests installing zendframework/zend-i18n (Zend\I18n component to allow translation of validation error messages)
zendframework/zend-validator suggests installing zendframework/zend-math (Zend\Math component, required by the Csrf validator)
zendframework/zend-validator suggests installing zendframework/zend-i18n-resources (Translations of validator messages)
zendframework/zend-validator suggests installing zendframework/zend-servicemanager (Zend\ServiceManager component to allow using the ValidatorPluginManager and validator chains)
zendframework/zend-validator suggests installing zendframework/zend-session (Zend\Session component, ^2.8; required by the Csrf validator)
zendframework/zend-code suggests installing doctrine/annotations (Doctrine\Common\Annotations >=1.0 for annotation features)
zendframework/zend-soap suggests installing zendframework/zend-http (Zend\Http component)
Package container-interop/container-interop is abandoned, you should avoid using it. Use psr/container instead.
Writing lock file
Generating autoload files

和:

zeinab:~/my_soap_server$ composer require zendframework/zend-soap
PHP Warning:  Module 'soap' already loaded in Unknown on line 0
PHP Warning:  Module 'soap' already loaded in Unknown on line 0
Using version ^2.8 for zendframework/zend-soap
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Package container-interop/container-interop is abandoned, you should avoid using it. Use psr/container instead.
Writing lock file
Generating autoload files

这是mySoapService.php的内容:

class MyClass {
    /**
     * @param integer $inputParam
     * @return string
     */
    public function method1($inputParam) {
        return "This is your input: " . $inputParam . ".";
    }

    /**
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    public function method2($inputParam1, $inputParam2) {
        return "This is your inputs: " . $inputParam1 . " and " . $inputParam2 . ".";
    }

}

$server = new Zend\Soap\Server(null, $options);
// Bind Class to Soap Server
$server->setClass('MyClass');
// Bind already initialized object to Soap Server
$server->setObject(new MyClass());
$server->handle();

但是当我尝试使用php mySoapService.php运行它时,出现此错误:

zeinab:~/my_soap_server$ php app/mySoapServer.php 
PHP Warning:  Module 'soap' already loaded in Unknown on line 0
PHP Fatal error:  Uncaught Error: Class 'Zend\Soap\Server' not found in /home/zeinab/my_soap_server/app/mySoapServer.php:23
Stack trace:
#0 {main}
  thrown in /home/zeinab/my_soap_server/app/mySoapServer.php on line 23

我还试图将"zendframework/zend-soap": "^2.8"放在requirerequire-devcomposer.json部分中,然后重复该过程;发生了相同的结果。

php soap zend-framework zend-soap
1个回答
0
投票

似乎您忘了添加作曲家的自动加载功能。告诉PHP在哪里可以找到您要实例化的类是必要的。请查看Composer's documentation,以获取有关它的更多信息。

在文件的开头添加include __DIR__ . '/PATH/TO/VENDOR/FOLDER/autoload.php';

© www.soinside.com 2019 - 2024. All rights reserved.