当get方法存在时,PHP get_class_methods()返回null

时间:2014-02-12 19:57:42

标签: php

我有一个类我正在使用三个方法,构造函数和另外两个。当我运行get_class_methods(new classForTesting())get_class_methods('classForTesting')时,它返回null,即使该类中有三个方法。我花了更多的时间用谷歌搜索这个问题而不是承认,但没有用。

为什么get_class_methods()不适合我?我是不正确地设置了我的课程还是其他的?

编辑:这是我在公司工作的代码库的一部分,我不确定我有多少可以公开发布。我在下面发布的内容是我正在使用的缩减版本。代码基本相同,但第一个类更长,功能更多。

我的代码:

class someOtherClass {
    private $aVar;

    public function someFunction() {
        return "data";
    }
}

class classForTesting {
    public $testVar;

    public function classForTesting () {
        return true;
    }

    public function methodTrue () {
        return true;
    }

    public function methodFalse () {
        return false;
    }
}

3 个答案:

答案 0 :(得分:0)

您返回此代码的原因是什么:

<?php
class classForTesting {
    public $testVar;

    public function classForTesting () {
        return true;
    }

    public function methodTrue () {
        return true;
    }

    public function methodFalse () {
        return false;
    }
}
print_r(get_class_methods('classForTesting'));

将其保存到 test.php 并运行:

  

php test.php

你应该得到:

Array
(
    [0] => classForTesting
    [1] => methodTrue
    [2] => methodFalse
)

你的回答是什么?

答案 1 :(得分:0)

刚刚在此测试:http://writecodeonline.com/php/

它有效 - 您只需要打印结果。亲自尝试一下:

class classForTesting {
    public $testVar;

    public function classForTesting() {
        return true;
    }

    public function methodTrue() {
        return true;
    }

    public function methodFalse() {
        return false;
    }
}
print_r( get_class_methods('classForTesting') );

答案 2 :(得分:0)

请务必:

  1. 启用错误报告(error_reporting(E_ALL))并使用ini_set将display_errors设置为1
  2. 使用:while(@ob_end_flush());
  3. 你在哪里打印输出?这个班级已加载?你在用__autoload吗?尝试手动要求这个类。
  4. 在var_dump之前和之后打印一些内容,以确保您不在某些try / catch / ob / other中。也许这个null不是你的空。
  5. 的var_dump(class_exists(&#39; classForTesting&#39;))
  6. 使用phpinfo检查此代码是否使用RunKit在运行时修改类。
  7. 使用反射:$ r = new ReflectionClass(&#39; classForTesting&#39;); $ R-&GT;的getMethods();如果这是同一个文件,请使用反射来获取文件名。
  8. 使用xdebug手动检查发生了什么