Инициирование массива внутри класса

У меня был hella времени, пытаясь получить массив для инициализации внутри класса. Я пытаюсь создать боковое меню, используя массив и дочерний класс. Я пытался решить эту проблему в течение нескольких дней, и теперь я прошу помощи. У меня такое чувство, что мне не хватает чего-то простого, так как я только изучаю PHP.

Ниже мой код и закомментированные строки — попытки решения, которые не сработали.

<?php
/*************   global  variables  ******************************/
//global $house_array, $car_array, $vacation_array, $company_address;
$company_name = "Heaven HVAC";
$street = '12345 Blue Canyon Rd.';
$company_citystatezip = "Heaven, CA 91777";

/*************   end global  variables  **************************/

echo '<H1 align="center">Calling Array inside Child Class</H1>';class Company{
//// insert object variables (properties) HERE
var $company_url = "http://localhost";
var $company_email = "[email protected] ";

//// insert methods here
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;
}

function getFooter($color) {
$this->address;
$bottomfooter = "<TABLE align='center'; style='background-color:$color;width:50%'><TR><TD>";
$bottomfooter .= "<center><b><u>$this->address</center></b></u>";
$bottomfooter .= "</TD></TR></TABLE>";
return $bottomfooter;
}
}  // end class Company

//// Working On child class - If commented out, then the code has been tried and failed
class AirCondition extends Company {
var $navbar_array;

//// create array
function  create_navbar_array ( )  {
$mainurl = $this->company_url;
$this->navbar_array = array( "Home Page"=>"$mainurl?whichpage=home", "Sales"=>"$mainurl?whichpage=sales",
"Support" => "$mainurl?whichpage=support", "Contacts" => "$mainurl?whichpage=contact" );
}

//create_navbar_array();
// return $navbar_array;

function getLeftNavBar($array){

//    create_navbar_array();

## Create a table to display arrays
print "<TABLE BORDER='1'>";
echo '<tr><td>Navigation Menu</td></tr>';
foreach($array as $Page){
echo "<tr><td>{$Page}</td></tr>";
return $array;
}
echo "</TABLE>";
}
}$HVACcompany = new AirCondition();
$HVACcompany->address = "777 Estate Rd <br /> $company_citystatezip";
echo $HVACcompany->getHeader($company_name, orange);
echo "<br/>";
echo $HVACcompany->getFooter(green);

//echo $HVACcompany->getLeftNavBar();
//echo $HVACcompnay->create_navbar_array();
//$HVACcompnay->create_navbar_array();
$HVACcompany->getLeftNavBar($navbar_array);

?>

Я могу создать макет веб-страницы, но массив не инициализируется. Что я делаю неправильно / отсутствует?

-1

Решение

Следующая строка:

$HVACcompany->getLeftNavBar($navbar_array);

должно быть:

$HVACcompany->getLeftNavBar($HVACcompany->navbar_array);

Поскольку $ navbar_array никогда не был объявлен в глобальном пространстве имен, он был объявлен как открытая переменная в классе AirCondition, который был инициализирован переменной $ HVACcompany.

Дополнительно вам нужно вызвать функцию $HVACcompany->create_navbar_array();
перед звонком $HVACcompany->getLeftNavBar($HVACcompany->navbar_array); для того, чтобы создать массив $ navbar_array.

Также удалите return $array; оператор внутри цикла foreach.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]