Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;致命错误:调用未定义函数";即使函数是明确定义的_Php - Fatal编程技术网

Php &引用;致命错误:调用未定义函数";即使函数是明确定义的

Php &引用;致命错误:调用未定义函数";即使函数是明确定义的,php,Php,这是我第一次真正进入PHP,我很难理解为什么会出现错误消息。我已经定义了一个函数,但有人告诉我我还没有这样做 我尝试过更改函数的名称和函数在类中出现的顺序(我知道这不会有什么不同),但我想不出还有什么其他方法可以让它工作。代码在我看来非常好,错误消息也没有太多可处理的地方 <?php class PinNumberGenerator { private $pins; private $disallowedPins = array(0000,1111,2222,3333,4444,555

这是我第一次真正进入PHP,我很难理解为什么会出现错误消息。我已经定义了一个函数,但有人告诉我我还没有这样做

我尝试过更改函数的名称和函数在类中出现的顺序(我知道这不会有什么不同),但我想不出还有什么其他方法可以让它工作。代码在我看来非常好,错误消息也没有太多可处理的地方

<?php

class PinNumberGenerator {

private $pins;
private $disallowedPins = array(0000,1111,2222,3333,4444,5555,6666,7777,8888,9999,1234,5678,2468); // Obvious pins

function __construct($amount) {
    $pins = $this->createPinsArray($amount);
}

function generatePin() {
    return rand(0,9).rand(0,9).rand(0,9).rand(0,9);
}

private function createPinsArray($amount) {

    $currentPin;
    $pinsArray = array();

    while(count($pinsArray) < $amount) {

        $currentPin = generatePin();

        if (in_array($currentPin, $disallowedPins)) {
            continue;
        } else {
            $pinsArray[] = $currentPin;
        }
    }

    return $pinsArray;
}

public function getPins() {

    foreach($pin as $pins) {
    echo $pin . "<br>";
    }

}
}

$pins = new PinNumberGenerator(10);
$pins->getPins();

?>

generatePin()
是类的实例方法。它必须是带有
$this
的引用。更改:

$currentPin = generatePin();
致:

$pins
的所有引用执行相同的操作

更改:

$pins = $this->createPinsArray($amount);
致:

和变化:

foreach($pin as $pins) {
致:

最后,改变:

if (in_array($currentPin, $disallowedPins)) {

所有类成员都需要使用
$this
generatePin()引用。
是类的实例方法。它必须是带有
$this
的引用。更改:

$currentPin = generatePin();
致:

$pins
的所有引用执行相同的操作

更改:

$pins = $this->createPinsArray($amount);
致:

和变化:

foreach($pin as $pins) {
致:

最后,改变:

if (in_array($currentPin, $disallowedPins)) {


所有类成员都需要使用
$this

引用,类中的所有方法都应该使用$this进行访问

因此,在类PinNumberGenerator中,应该访问generatePin()函数 使用$this


$this->generatePin()

类中的所有方法都应使用$this进行访问

因此,在类PinNumberGenerator中,应该访问generatePin()函数 使用$this


$this->generatePin()

什么函数是未定义的?这将有助于了解。如果PHP告诉您某些内容未定义,您肯定没有定义它。它是generatePin函数,它已定义,但未被正确访问。什么函数未定义?这将有助于了解。如果PHP告诉您某些内容未定义,那么您肯定没有定义它。它是generatePin函数,并且已定义,因此无法正确访问。假设它是该类的一部分。这段代码的编写方式我们不知道。是的,我们知道。只是没有缩进。但是它肯定在
PinNumberGenerator
类中。它在记事本++中缩进,只是不在这里。很抱歉,它似乎粘贴得不好。我现在看到了整个类声明。我想知道他们在我读了问题后是否做了编辑?谢谢你,亚萨,这让我走上了正确的轨道!做出这样的更改会导致出现大约15个其他错误,但这肯定需要更多的工作:假设它是该类的一部分。这段代码的编写方式我们不知道。是的,我们知道。只是没有缩进。但是它肯定在
PinNumberGenerator
类中。它在记事本++中缩进,只是不在这里。很抱歉,它似乎粘贴得不好。我现在看到了整个类声明。我想知道他们在我读了问题后是否做了编辑?谢谢你,亚萨,这让我走上了正确的轨道!做出这样的更改会导致出现大约15个其他错误,但这肯定需要更多的处理:D