gpt4 book ai didi

php - $this->value 丢失,嗯,它的值

转载 作者:可可西里 更新时间:2023-11-01 13:07:24 25 4
gpt4 key购买 nike

我正在使用的 PHP 文件有问题,而且我似乎找不到解决方案。

在代码的一部分中设置了$this->value的值,根据我的测试,该值设置正确。

但是,稍后在同一代码中,$this->value 为空。

代码如下:

<?php

class Padd_Input_Advertisement {

protected $keyword;
protected $value;
protected $name;
protected $description;

function __construct($keyword,$name,$description='') {
$this->keyword = $keyword;
$this->value = unserialize(get_option($keyword));
$this->name = $name;
$this->description = $description;
}

public function get_keyword() {
return $this->keyword;
}

public function set_keyword($keyword) {
$this->keyword = $keyword;
}

public function get_value() {
return $this->value;
}

public function set_value($value) {
$this->value = $value;
}

public function get_name() {
return $this->name;
}

public function set_name($name) {
$this->name = $name;
}

public function get_description() {
return $this->description;
}

public function set_description($description) {
$this->description = $description;
}

public function __toString() {

$strHTML = '';
$strHTML .= '<tr valign="top">';
$strHTML .= ' <th scope="row"><label for="' . $this->keyword . '">' . $this->name . '</label></th>';
$strHTML .= ' <td>';
$strHTML .= ' <label for="' . $this->keyword. '_alt_desc">Short Description</label><br />';
$strHTML .= ' <input name="' . $this->keyword . '_alt_desc" type="text" id="' . $this->keyword . '_alt_desc" value="' . $this->value->get_alt_desc() . '" size="80" /><br />';
$strHTML .= ' <label for="' . $this->keyword. '_img_url">Image URL</label><br />';
$strHTML .= ' <input name="' . $this->keyword . '_img_url" type="text" id="' . $this->keyword . '_img_url" value="' . $this->value->get_img_url() . '" size="80" /><br />';
$strHTML .= ' <label for="' . $this->keyword. '_web_url">Website</label><br />';
$strHTML .= ' <input name="' . $this->keyword . '_web_url" type="text" id="' . $this->keyword . '_web_url" value="' . $this->value->get_web_url() . '" size="80" />';
$strHTML .= ' <br /><small>' . $this->description . '</small>';
$strHTML .= ' </td>';
$strHTML .= '</tr>';
return $strHTML;
}

}

?>

function __construct 的顶部,设置了值,我确认会发生这种情况。

但是,在底层函数function __toString中,$this->value为空。

知道是什么原因造成的吗?

编辑

因此,回顾一下,$this->value 在 __construct 函数中正确设置,但在 __toString 函数中为空。

编辑 2

我还应该提到在 __construct 函数中设置的其他变量在 __toString 函数中起作用,例如 $this->keyword。只是 $this->value 变成了空白。

编辑 3这个类是这样调用的

$padd_options['advertisements'] = array(
new Padd_Input_Advertisement(
PADD_NAME_SPACE . '_ads_125125_1',
'Square Ad 1 (125x125)',
'The advertisement will be posted at the side bar.'
),
new Padd_Input_Advertisement(
PADD_NAME_SPACE . '_ads_125125_2',
'Square Ad 2 (125x125)',
'The advertisement will be posted at the side bar.'
),
new Padd_Input_Advertisement(
PADD_NAME_SPACE . '_ads_125125_3',
'Square Ad 3 (125x125)',
'The advertisement will be posted at the side bar.'
),
new Padd_Input_Advertisement(
PADD_NAME_SPACE . '_ads_125125_4',
'Square Ad 4 (125x125)',
'The advertisement will be posted at the side bar.'
),
);

最佳答案

这是因为未序列化的对象在不知道类类型的情况下保留方法。

当您反序列化 get_keyword() 函数调用的结果时,如果序列化对象的类未知,PHP 将回退到特殊类 __PHP_Incomplete_Class_Name。这个类基本上是一个虚拟类:它没有任何方法。但是,它允许您访问反序列化对象的属性。

因此,如果您希望能够调用 $this->value 的方法(这是您在 __toString 中所做的),您将必须在调用反序列化之前包含声明 $this->value 类型的文件。

[edit] 你可以查看the PHP manual有关反序列化过程的更多详细信息。

关于php - $this->value 丢失,嗯,它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com