0

我在这里有一个随机数生成器,但我无法让它在所有 WordPress 评论中运行。我得到:

Fatal error: Cannot redeclare class Random in [mysite]/functions.php on line 148

这是随机数生成器的功能:

/**
 * Generate random images for the forum games function
 */
function random_forum_games() {

class Random {
    // random seed
    private static $RSeed = 0;

    // set seed
    public static function seed($s = 0) {
        self::$RSeed = abs(intval($s)) % 9999999 + 1;
        self::num();
    }

    // generate random number
    public static function num($min = 0, $max = 9999999) {
        if (self::$RSeed == 0) self::seed(mt_rand());
        self::$RSeed = (self::$RSeed * 125) % 2796203;
        return self::$RSeed % ($max - $min + 1) + $min;
    }
}

    // set seed
    Random::seed(42);
    // echo 10 numbers between 1 and 10
    for ($i = 0; $i < 1; $i++) {
        echo Random::num(1, 10) . '<br />';
    }
}
add_action( 'forum_games', 'random_forum_games'  );

为了在每条评论上方调用该函数,在我的评论模板中,我有:

<?php do_action ( 'forum_games' ); ?>

我知道为什么我做错了,但我并不是真正的“程序员”。我来这里是为了一些简单的帮助,无论是一行代码还是一个链接,可以告诉我该做什么而无需尝试教我 PHP。我没有时间学习PHP,所以请多多关照。如果没有简单的解决方案,那么您不必回答。

我并不是要听起来防御,但我以前被程序员拒绝过。并非每个需要运行某些东西的人都有时间或技能来学习每一个细节。你不要指望每一个给家人做饭的人都会学习如何打猎或制作杀虫剂,所以请不要因为我不会 PHP 而拒绝我。如果你愿意,只需将我链接到不试图教我从头开始编码的东西。我正在尽我所能做自己的工作,我只要求支持的花絮,所以请不要无礼。谢谢你。

4

2 回答 2

1

您没有在函数内定义类。它应该在函数外部定义,然后您可以(如果需要)在函数内部对其进行实例化,例如

class rand {
   ...
}

function get_rand() {
    $r = new rand();
}

或者更好的是,您只需在类中有一个 get_rand() 方法:

class rand() {
   function get_rand() {
      ...
   }
}

$r = new rand();
echo $r->get_rand();
于 2013-03-31T19:25:49.997 回答
1

您似乎不止一次声明了该函数。也许它被包含了不止一次,或者你不止一次地调用这个类。尝试将类移出函数,如果它在包含文件中,则仅使用 include_once 将其包含一次,而不是包含。

至于不友好的人……有些是,那又怎样。大多数人都很友好,乐于助人......只要确保您提供有关您的问题的详细信息(代码+使其可重复的方式)并表明您付出了努力,您会没事的:)

于 2013-03-31T19:27:07.940 回答