Php __不创建新数组的构造

Php __不创建新数组的构造,php,arrays,constructor,Php,Arrays,Constructor,我不熟悉PHP和OOP,我试图在SummationService中使用构造函数创建一个新的数组$service,但它从未被创建,因此sum函数只接收(0,0)并抛出一系列错误。如果我用函数中的值声明数组,它将正常工作。结果应该是-1 <html> <body> <?php $service = new SummationService([-1, 0, 2, 7, -15]); echo $service->sum(0, 0); class Summatio

我不熟悉PHP和OOP,我试图在SummationService中使用构造函数创建一个新的数组$service,但它从未被创建,因此sum函数只接收(0,0)并抛出一系列错误。如果我用函数中的值声明数组,它将正常工作。结果应该是-1

<html>
<body>
<?php

$service = new SummationService([-1, 0, 2, 7, -15]);
echo $service->sum(0, 0);

class SummationService {
    public $array;

    function __construct(){
        $this->array = array();
    }

    function sum($a, $b): int {
        return array_sum(array_slice($array, $a, $b - $a + 1));
    }
}
?>
</body>
</html>

编辑:


第16行是
返回数组_和(数组_片($array,$a,$b-$a+1))

您正在使用参数实例化该类,但您的
\u构造()
没有参数

另外,您在
sum
方法中对class属性
$array
的寻址不正确

class SummationService {
    public $array;

    function __construct($ar){
        $this->array = $ar;
    }

    function sum($a, $b): int {

        return array_sum(array_slice($this->array, $a, $b - $a + 1));
            // addressing corrected  ^^^^^^^
    }
}


$service = new SummationService([-1, 0, 2, 7, -15]);
echo $service->sum(0, 0);

第35行是哪一行?你的代码没有那么高。请告诉我们哪一行是你展示给我们的21行代码中的第35行@FunkFortyNiner@RiggsFolly同上。我想他们可能不能使用单词
array
,因为它可能是保留的,但不能确定;想法?这行调用构造函数
$service=newsummationservice([-1,0,2,7,-15])您正在输入一个参数!!!但是构造函数的参数列表中没有参数???所以
$this->array
是空的ARRAY@Sherif这里有点快,来个评论解释一下吧谢谢你的迅速回复,这是我们的初衷!谢谢你,我的朋友@FunkCan还没有投票权,里格斯(票用完了)。我修正了一个拼写错误,显然不是我的否决票;-)不知道你为什么会这样。编辑:欢迎。@FunkFortyNiner告诉我,如果在一百万个元素的数组中有上千个对sum()的随机调用,这会起作用吗?压力测试将如何进行?
class SummationService {
    public $array;

    function __construct($ar){
        $this->array = $ar;
    }

    function sum($a, $b): int {

        return array_sum(array_slice($this->array, $a, $b - $a + 1));
            // addressing corrected  ^^^^^^^
    }
}


$service = new SummationService([-1, 0, 2, 7, -15]);
echo $service->sum(0, 0);