我知道这个问题非常相似,如果不是和其他一些问题完全一样,但我似乎有问题甚至在遵循这些建议之后调用该函数。谢谢你的理解。
我尝试使用" setUserName"设置用户名此文件中的函数从另一个文件调用该函数,如下所示。我似乎很想知道如何调用类和命名空间。
namespace StructType;
use \WsdlToPhp\PackageBase\AbstractStructBase;
/**
* This class stands for webExport StructType
* @subpackage Structs
*/
class WebExport extends AbstractStructBase
{
/**
* The userName
* Meta informations extracted from the WSDL
* - nillable: true
* @var string
*/
public $userName;
/**
* The passwordMd5
* Meta informations extracted from the WSDL
* - nillable: true
* @var string
*/
public $passwordMd5;
/**
* The ecfFile
* Meta informations extracted from the WSDL
* - nillable: true
* @var string
*/
public $ecfFile;
/**
* Constructor method for webExport
* @uses WebExport::setUserName()
* @uses WebExport::setPasswordMd5()
* @uses WebExport::setEcfFile()
* @param string $userName
* @param string $passwordMd5
* @param string $ecfFile
*/
public function __construct($userName = null, $passwordMd5 = null, $ecfFile = null)
{
$this
->setUserName($userName)
->setPasswordMd5($passwordMd5)
->setEcfFile($ecfFile);
}
/**
* Get userName value
* @return string|null
*/
public function getUserName()
{
return $this->userName;
}
/**
* Set userName value
* @param string $userName
* @return \StructType\WebExport
*/
public function setUserName($userName = null)
{
// validation for constraint: string
if (!is_null($userName) && !is_string($userName)) {
throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($userName)), __LINE__);
}
$this->userName = $userName;
return $this;
}
/**
* Get passwordMd5 value
* @return string|null
*/
public function getPasswordMd5()
{
return $this->passwordMd5;
}
/**
* Set passwordMd5 value
* @param string $passwordMd5
* @return \StructType\WebExport
*/
public function setPasswordMd5($passwordMd5 = null)
{
// validation for constraint: string
if (!is_null($passwordMd5) && !is_string($passwordMd5)) {
throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($passwordMd5)), __LINE__);
}
$this->passwordMd5 = $passwordMd5;
return $this;
}
/**
* Get ecfFile value
* @return string|null
*/
public function getEcfFile()
{
return $this->ecfFile;
}
/**
* Set ecfFile value
* @param string $ecfFile
* @return \StructType\WebExport
*/
public function setEcfFile($ecfFile = null)
{
// validation for constraint: string
if (!is_null($ecfFile) && !is_string($ecfFile)) {
throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($ecfFile)), __LINE__);
}
$this->ecfFile = $ecfFile;
return $this;
}
/**
* Method called when an object has been exported with var_export() functions
* It allows to return an object instantiated with the values
* @see AbstractStructBase::__set_state()
* @uses AbstractStructBase::__set_state()
* @param array $array the exported values
* @return \StructType\WebExport
*/
public static function __set_state(array $array)
{
return parent::__set_state($array);
}
/**
* Method returning the class name
* @return string __CLASS__
*/
public function __toString()
{
return __CLASS__;
}
}
下载我试图设置用户名如何从另一个文件中调用该函数。
<?php
require_once __DIR__ . '/vendor/autoload.php';
class Class2{
use \StructType\webExport;
public static function staticFunction(){
setUserName("webservice");
}
}
我哪里错了?如果我直接在consctruct中设置密码,一切都按预期工作:
public function __construct($userName = "ws", $passwordMd5 = "qwerty", $ecfFile = null)
上一条错误讯息:
致命错误:Class2无法使用StructType \ WebExport - 它不是第289行index.php中的特征
答案 0 :(得分:0)
您使用use
内部类,表示使用Traits
,如果您要创建WebExport
对象,则可以使用关键字new
来创建对象WebExport
的例子,例如:
public static function staticFunction() {
$webExport = new \StructType\WebExport();
$webExport->setUserName('webservice');
$webExport->setPasswordMd5('somemd5password');
$webExport->setEcfFile(somefile)'
}
答案 1 :(得分:0)
所以,这里有几件事......
如果您有一个use
语句 一个类的定义,那么它将会期待Trait
。那个use语句确实需要在类的定义之外,因为你在这里使用的是Class而不是Trait。此外,当您想要使用课程时,案例很重要(可能只是OP问题中的类型o)。 WebExport
不是webExport
。最后,如果要设置类的实例变量,则需要具有该类的实例才能设置其中一个成员/实例变量。我不确定您的Class2是否打算扩展WebExport类,或者您是否想要使用合成并在新Class2的WebExport 属性上设置userName。 (我不确定你打算如何构建你的课程),但我希望有几种可能的用途......
require_once __DIR__ . '/vendor/autoload.php';
use \StructType\WebExport;
class Class2 {
protected $webExportMemberVariable;
public function __construct() {
$this->webExportMemberVariable = new WebExport();
}
public function noLongerStaticFunction() {
$this->webExportMemberVariable->setUserName("webservice");
}
}
^在上面注意到WebExport
有资本&#39; W&#39;在use语句中,我在setUserName
类型的实例上调用WebExport
。静态地做这个似乎有点奇怪但仍然可能......
require_once __DIR__ . '/vendor/autoload.php';
use \StructType\WebExport;
class Class2 {
protected static $webExportStaticVariable = new WebExport();
public static function staticFunction() {
self::$webExportMemberVariable->setUserName("webservice");
}
}
^从静态方法这样做是一个有点不可靠的恕我直言。在任何情况下,你必须有一个\StructType\WebExport
类型的实例来设置一个成员变量,就好像你想在这里做的那样。