【问题标题】:PHP Variable in a Class array类数组中的 PHP 变量
【发布时间】:2014-04-13 09:46:07
【问题描述】:

我正在尝试调用一个变量以添加到类中的数组中,但是当我尝试时,我会遇到意外的 T_VARIABLE 错误。

class MB_API {
    $SName = 'Test';
    $PWD = 'test';
    $SiteID = '10';
    protected $client;
    protected $sourceCredentials = array(
        "SourceName"=>$SName, 
        "Password"=>$PWD, 
        "SiteIDs"=>array($SiteID)
    );
};

变量可以在类内设置,也可以在类外设置,没关系。它们将通过从数据库中提取来设置。

【问题讨论】:

  • 请您编辑您的问题以包含整个错误消息吗?

标签: php arrays class oop variables


【解决方案1】:

默认变量值需要是编译时文字(它们需要是常量脚本运行之前,基本上是一个"literal string",一个数字42 或常量值数组array(1, 2, 3)),意思是,它们不能有动态值(例如另一个变量)。

更好的方法是使用构造函数:

protected $sourceCredentials = []; //PHP5.4 and above syntax, synonymous to array()

public function __construct(array $sourceCredentials) {
    $this->sourceCredentials = $sourceCredentials;
}

请注意,这样一来,由调用者(实例化对象的代码)从外部传入凭据数组。有不同的方法可以做到这一点,但这被认为是最佳做法。

【讨论】:

  • 以非技术方式扩展意味着$sourceCredentials只能设置为空数组。您必须在 MB_API 的方法中填写它
  • @CarlMarkham:扩展并添加了一个示例 :)
【解决方案2】:

您可以在构造函数中分配变量值。

为了获得最佳实践,您可以这样使用:

class MB_API {

    private $Sname;
    private $PWD;
    private $SiteID;
    protected $client;
    protected $sourceCredentials;

    public function __construct() {

        // Set your default Values here

        $this->Sname = "Test";
        $this->PWD = 'test';
        $this->SiteID - '10';

        $this->sourceCredentials = array(
            "SourceName" => $this->SName,
            "Password" => $this->PWD,
            "SiteIDs" => array($this->SiteID)
        );
    }

}

【讨论】:

  • 感谢这给了我想要的东西。
【解决方案3】:

你有两个不同的“$sname”——一个是$SName,另一个是$Sname

【讨论】:

  • PHP 不区分大小写,这不是问题。
  • 啊,原来如此。把我的语言弄糊涂了!
猜你喜欢
  • 1970-01-01
  • 2016-05-22
  • 2011-06-25
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 2021-09-08
  • 2013-05-16
相关资源
最近更新 更多