PHP类属性未传入方法

时间:2016-03-09 00:24:53

标签: php html class oop properties

首先,我对PHP非常陌生,并试图了解如何使用对象类。

几天来,我已经遇到了一个我无法解决的挑战。问题是类的属性不是在类的方法中调用/使用的。我知道该物业不是空的,因为我投入了一种测试方法来确认它。

我必须有一些我不知道的东西,我希望它不是很明显,因为我花了好几天尝试不同的解决方案都没有用。

以下是我的评论代码:

<?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;
?>

希望你能看到&#34;地址&#34;属性假设从&#34; getFooter&#34;中输出蓝色表格。方法。相反,我的结果是一条没有文字的蓝线。此外,&#34;地址&#34;属性不是空的,因为我包含了一个带有&#34; __ get($ address)&#34;的测试。方法

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

也许你应该替换

function getFooter($color) {
    $this->address;

使用

function getFooter($color) {
    $address = $this->address;

我理解php行为的方式,这一行

$bottomfooter .= "<center><b><u>$address</center></b></u>";

会尝试使用局部变量(函数本地)$ address但未定义$ address。据我了解php是如何工作的 - 这一行

$this->address;

将以这种方式解释:if address =“abc”与告诉解释器相同

"abc";

未指定任何操作。

但我认为 $ address = $ this-&gt;地址; 并不是解决问题的唯一方法。我想你可以用这个就好了:

$bottomfooter .= "<center><b><u>{$this->address}</center></b></u>";

希望有所帮助。