【问题标题】:ReflectionFunction Not found in laravel在 laravel 中找不到反射函数
【发布时间】:2017-10-29 11:42:53
【问题描述】:

查找函数在 Laravel 应用程序中的定义位置 我正在尝试这样做:

App\Http\Controllers命名空间内:

$reflFunc = new ReflectionFunction('function_name');

但是得到一个错误:

PHP 错误:类 'App\Http\Controllers\ReflectionFunction' 不是 在发现 /var/www/html/s/source/app/Http/Controllers/HomeController.php 在第 169 行

我什至尝试使用全局命名空间:

ReflectionFunction 类不应该位于 laravel 试图找到它的位置, 但请建议我可能缺少什么?

【问题讨论】:

  • 伙计们,我很抱歉提出错误的红旗!这是其他一些问题,这一次导致错误。感谢您的支持。

标签: php laravel


【解决方案1】:

您在类中运行此代码,该类本身位于 namespace App\Http\Controllers 中。所以你应该明确定义ReflectionFunction 类属于全局命名空间:

$reflFunc = new \ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();

注意\ReflectionFunction 而不是简单的ReflectionFunction

【讨论】:

  • 你能想到任何理由吗?
  • 原因肯定是缺少全局命名空间定义,即使是 PHP 错误也会给你一个提示,因为它试图在当前命名空间中找到 ReflectionFunction。请重新检查您是否尝试过正确调用全局类
  • 接受这个答案,因为你是第一个回答的人。
【解决方案2】:

您似乎忘记了班级顶部的use ReflectionFunction;。或者更改为(注意反斜杠)$reflFunc = new \ReflectionFunction('function_name');

【讨论】:

  • 我认为不需要。
  • 您是否尝试将其包含在内?我确信这会解决您的问题。
  • 如果这仍然不起作用,请检查您的代码,看看您是否在代码的任何其他部分调用 ReflectionFunction,除了第 169 行的 HomeController.php。
【解决方案3】:

ReflectionFunction 在全局命名空间中。

见:http://php.net/manual/en/class.reflectionfunction.php

在全局命名空间中使用类构造函数

$reflFunc = new \ReflectionFunction('function_name');

【讨论】:

  • 我试过了,但得到同样的错误。你能想到任何理由吗?
猜你喜欢
  • 2017-03-31
  • 1970-01-01
  • 2019-01-20
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
相关资源
最近更新 更多