我在获取类中另一个方法中的类成员设置的值时遇到麻烦。我尝试使用__get
和__set
魔术方法,getter
和setter
以及代码中的另外两种方法,但是它们都不起作用。
我正在寻找的是类型是否为U
,而不是应使用javascript变量。
class UserRatings extends User {
private $postType; // string
public function headJS(){
// access postType value from getItem method
// this outputs nothing (blank)
if ($this->postType = 'U') {
# code...
}
}
public function getItem($post){
$this->postType = $post['data']['post_type'];
$markup = 'html markup to render the output';
return $this->postType;
}
public function isType($post)
{
if ($post == 'U') {
$this->isType = true;
}
return $this->isType;
}
}
class UserRatings extends User {
private $isType = false;
public function headJS(){
// even this doesnt't work too
if ($this->isType) {
# code...
}
}
public function getItem($post){
$markup = 'html markup to render the output';
$type = $post['data']['post_type'];
$this->isType($type);
}
public function isType($post)
{
if ($post == 'U') {
$this->isType = true;
}
return $this->isType;
}
}
答案 0 :(得分:1)
您的第一种方法将不起作用,因为$isType
将始终为false
。因为它尚未初始化,所以即使您使用函数isType($post)
对其进行初始化,也要给它true
作为值。但是,如果您检查headJS()
是否为$this->isType ==‘U’
,则始终为false。
对于第二种方法,一切似乎都很好。我唯一的猜测是您在HeadJS()
之前调用isType($post)
或$post
的值始终不同于“ U”
答案 1 :(得分:0)
您在$this->isType(type);
错过了$号。
您必须在$this->headJS();
之后致电$this->isType = true;
class UserRatings extends User {
private $isType = false;
public function headJS(){
// even this doesnt't work too
if ($this->isType) {
# code...
}
}
public function getItem($post){
$markup = 'html markup to render the output';
$type = $post['data']['post_type'];
$this->isType($type);
}
public function isType($post)
{
if ($post == 'U') {
$this->isType = true;
$this->headJS();
}
return $this->isType;
}
}