【发布时间】:2016-10-11 11:25:23
【问题描述】:
我需要知道在 PHP 类中调用了哪个方法,并在可能的情况下在同一个类中处理它。
示例
class Pages
{
public function firstPage()
{
return 'First Page';
}
public function secondPage()
{
return 'Second Page';
}
public function thirdPage($details)
{
return view('ThirdPage')->with('details', $details);
}
//This will handle everything that happening.
public function handler($methodExecuted)
{
// $methodExecuted will hold what method was accessed.
echo 'Page ' . $methodExecuted . ' Was accessed';
}
}
与此类似,我不确定 PHP 是否可以使用此功能,“处理程序”方法只会将数据存储到真实应用程序中的数据库中,但这里只是回显一些数据。
PHP 是否有一种神奇的方法或任何可以实现此目的的方法?到目前为止,我遇到的唯一事情是 __call 方法,但这并不完全符合 id 的要求,尽管它有点在线。
【问题讨论】:
-
最大的问题是你为什么要这样做,知道调用哪种方法的最终目标是什么。实际上,您应该已经知道调用了哪个方法,因为是您编写了代码。因此,如果您能详细说明您想要完成的工作,而不仅仅是您认为解决问题的方法,我们或许可以为您提供更好的帮助。
-
@ChristianF 我需要知道返回的是哪个页面,以便我可以将其动态添加到日志中,作为在每个方法中为新日志编写代码的替代方法,我有 50 多个方法和一遍又一遍地编写代码似乎有点乏味,就像大多数编程语言一样,当你开始重复自己时,语言有一些东西可以最大限度地减少重复过程。显然 PHP 在这种特定情况下无论如何都不会。
-
语言没有减少重复的方法。程序员会。如果您需要添加日志记录,您应该使用与控制器逻辑分离的单独服务。当然,您有某种解析器,它知道要调用哪个
Page对象和哪个page()方法。这个解析器是您应该记录这些信息的地方。 -
@MadDog 我的意思是说简单的例子,而不是一遍又一遍地使用 if 语句,你会使用 switch 语句,我只是举一个简单的例子,无论如何感谢输入。
标签: php class methods magic-methods