【发布时间】:2016-06-23 04:26:13
【问题描述】:
首先,我对 PHP 非常陌生,并且正在尝试了解如何使用对象类。
几天来,我遇到了一个我无法解决的挑战。问题是类的属性没有在类的方法中被调用/使用。我知道该属性不是空的,因为我输入了一个测试方法来确认它。
一定是我遗漏了什么,我希望它不是很明显,因为我已经花了几天时间尝试不同的解决方案,但无济于事。
下面是我的 cmets 代码:
<?php
/************* global variables ******************************/
$company_name = "Stay Cool HVAC";
$street = '12345 Rockwell Canyon Rd.';
$company_citystatezip = "Hometown, CA 91777";
$company_address = "<center>$company_name <br/> ". "<center>$street <br />". "<center>$company_citystatezip";
/************* end global variables **************************/
echo '<H1 align="center">PHP Class Example</H1>';
class Company {
//// insert object variables (properties)
var $address;
//// insert methods below here
//// Test to see that address property is set to $company_address variable
function __get($address){
return $this->address;
}
function getHeader($company_name, $color) {
$topheader = "<TABLE align='center'; style='background-color:$color;width:50%'><TR><TD>";
$topheader .= "<H1 style='text-align:center'>$company_name</H1>";
$topheader .= "</TD></TR></TABLE>";
return $topheader;
}
//// The address property isn't passing to output in method
function getFooter($color) {
$this->address;
$bottomfooter = "<TABLE align='center'; style='background-color:$color;width:50%'><TR><TD>";
$bottomfooter .= "<center><b><u>$address</center></b></u>";
$bottomfooter .= "</TD></TR></TABLE>";
return $bottomfooter;
}
}
$companybanner = new Company();
echo $companybanner->getHeader($company_name, gold);
echo "<br/>";
$companybanner->address = "$company_address";
echo $companybanner->getFooter(blue);
// Test to confirm that "address" property is set - working
echo "<br />";
echo $companybanner->getaddress;
?>
希望您可以看到“地址”属性应该是通过“getFooter”方法在蓝色表格中输出的。相反,我的结果是一条没有文字的蓝线。此外,“地址”属性不为空,因为我确实包含了一个使用“__get($address)”方法的测试。
任何想法我做错了什么?
【问题讨论】:
-
将
"<center><b><u>$address</center></b></u>";更改为"<center><b><u>$this->address</center></b></u>";,它将按照您想要的方式工作。
标签: php html class oop properties