您好我正在尝试使用更具面向对象风格的PHP。
我创建了以下类,该类将显示供员工访问资源的项目菜单。出于某种原因,我似乎无法让两个函数都使用列表变量的相同副本(所以看起来如此)。
<?php
class Resources{
private $list = array();
function createMenuArray(){
$list[]= 'Client Info';
$list[]= 'Scripts';
$list[]= 'Employee Handbook';
$list[]= 'Contact';
$list[]= 'Tips & Tricks';
$list[]= 'Nuggets';
#These last two statements checks the size of list then prints to screen
$count = count($list);
echo " Array Creator Count: $count";
}
function formMenu(){
echo "
<h3> Employee Resources </h3>
<form action='employeeResources.php'>";
#The following two statements checks the size of list
$count = count($list);
echo "Count: $count";
for($i = 0; $i < $count; ++$i)
{
echo "
<input type ='submit' name='".$list[$i]."' value='".$list[$i]."'/>";
}
echo "</form>";
}
}
?>
我必须测试该类的简单页面:
<?php
include 'resources.php';
$obj = new Resources();
$obj->createMenuArray();
$obj->formMenu();
?>
使用函数本身中的echo statemnts作为测试语句,我得到了这个输出:
Array Creator Count:6(使用createMenuArray创建的数组) 员工资源(menuForm函数的开始) 计数:0(创建menuArray后的列表大小)
虽然当任何函数更改变量时,这些更改可以被类中的其他所有函数查看,所以我期待最后一行说Count:6。我试着查找它,但说实话我不是我确定我甚至都在寻找。
另外,我知道使用菜单的表单很奇怪,只是做一个实验。
答案 0 :(得分:3)
使用$this->list
inside方法访问类'member:
<?php
class Resources{
private $list = array();
function createMenuArray(){
$this->list[]= 'Client Info';
$this->list[]= 'Scripts';
$this->list[]= 'Employee Handbook';
$this->list[]= 'Contact';
$this->list[]= 'Tips & Tricks';
$this->list[]= 'Nuggets';
// More code here...