使用 PHP class 函数为同一 class 中的变量提供值的正确语法是什么?

What is the correct syntax for using a PHP class function to supply the value for a variable in the same class?

我正在做一个大学项目,该项目必须使用 CSV 文件来创建 table 的值。它必须有一个 class 并且它必须有特定的 class 变量(其中一个我已经创建用于测试)。只有变量被指定为必须成为 class 的一部分,但我认为将函数打包在 class 中会更好(除非有人有不同意见)。

基本上,我想使用 class 函数为 class 变量创建值。这是我的脚本(请参阅注释以获取解释):

    <?php
        class productRow {
            function make_table_row($i) {
                $row = 1;
                $tablerows = [];
                if (($input = fopen("input.csv", "r")) !== FALSE) {
                    while (($tabledata = fgetcsv($input, 1000, ",")) !== FALSE) {   //cycles through the rows of data creating arrays
                        if ($row == 1) {
                            $row++;     
                            continue;       //skips the first row because it's a header row I don't want on my input
                        }
                        $tablerows[] = $tabledata;      //uses the roles to populate a multidimensional array
                        $row++;
                    }
                    fclose($input);
                    return $tablerows[$i];      //uses the $i argument to return one of the row arrays
                }
            }
            var $itemNumber = this->make_table_row($i)[0];  //Line 118: calls make_table_row function to get the first item from the row returned
        }
        $pr1 = new productRow;
        echo $pr1->make_table_row(1);       //calls the function from within the class
    ?>

我收到此错误:致命错误:常量表达式在 C:\xampp\htdocs\Tylersite\index.php 中的第 118 行

中包含无效操作

我知道 return 有效,因为我用 print_r 测试过它,包括添加一个数组编号,就像我对那个变量值所做的那样,以获得特定的数组值。所以我不能正确调用该函数实例。我尝试了各种方法,包括删除 $this 关键字,因为我不确定我是否需要它,但事实是我真的不知道该怎么做,而且我很难找到正确的文档句法。有人知道怎么办吗?

使用构造函数的示例

class productRow {
    var $itemNumber = []; // default value doesn't matter as it will change in __construct

    public function __construct($i) {
        $this->itemNumber = $this->make_table_row($i)[0];
    }

    function make_table_row($i) {
        $row = 1;
        $tablerows = [];

        if (($input = fopen("input.csv", "r")) === FALSE) {
            // return early - reduces indentation
            return;
        }

        while (($tabledata = fgetcsv($input, 1000, ",")) !== FALSE) {   //cycles through the rows of data creating arrays
            if ($row == 1) {
                $row++;
                continue;       //skips the first row because it's a header row I don't want on my input
            }
            $tablerows[] = $tabledata;      //uses the roles to populate a multidimensional array
            $row++;
        }
        fclose($input);
        return $tablerows[$i];      //uses the $i argument to return one of the row arrays
    }
}

$pr1 = new productRow(1);
var_dump($pr1->make_table_row(1));