"致命错误:调用未定义的函数"即使功能明确定义

时间:2017-02-15 18:40:34

标签: php

这是我第一次真正涉足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();

?>

2 个答案:

答案 0 :(得分:2)

generatePin()是类的实例方法。它必须是$this的引用。变化:

$currentPin = generatePin();

为:

$currentPin = $this->generatePin();

$pins的所有引用都这样做。

变化:

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

为:

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

并改变:

foreach($pin as $pins) {

为:

foreach($this->pins as $pin) {

最后,改变:

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

if (in_array($currentPin, $this->disallowedPins)) {

所有班级成员都需要$this引用。

答案 1 :(得分:0)

应使用$ this

访问类中的所有方法

所以在你的类PinNumberGenerator中你应该访问generatePin()函数 使用$ this

$这 - &GT; generatePin();