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