使用面向对象方法PHP的数组

时间:2018-02-25 17:57:16

标签: php arrays oop

您好我正在尝试使用更具面向对象风格的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。我试着查找它,但说实话我不是我确定我甚至都在寻找。

另外,我知道使用菜单的表单很奇怪,只是做一个实验。

1 个答案:

答案 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...