【问题标题】:string matching for a magic __call method魔术 __call 方法的字符串匹配
【发布时间】:2011-09-30 01:42:35
【问题描述】:

我有一组名为 getThing($what, $extra_args) 的方法(get 总是出现在名称中)

...除了正常的称呼方式外,我还希望能够像这样称呼他们:

  • getWhatThing() => return getThing($what, $extra_args);

  • WhatThing() => echo getThing($what, $extra_args);

  • Thing('what') => echo getThing('what', $extra_args);

  • 如果所有这些都失败抛出方法不存在错误...

如何在 __call() 中执行此操作? 我知道我应该避免使用魔法方法,但我想让那些将使用我的 API 的人生活得更轻松:)

谢谢

【问题讨论】:

  • 为了满足我的好奇心:它是如何让您的 API 对其他人更容易的?
  • 让使用您的 API 的人的生活更轻松:不要实现此功能。
  • 你为什么这么说?这不就是 __call 的用途吗?
  • 真的吗?为什么你想让你的班级变得如此神奇和可怕?相同功能的 4 种不可见方法...__call()可能用于类似的事情,但这并不意味着您必须不惜一切代价使用它.与真正的方法相比没有任何好处。

标签: php regex string string-matching magic-methods


【解决方案1】:

The code in this comment on PHP.net's documentation for __call 对您来说应该是一个很好的起点,但您需要在 switch 部分添加更多匹配项。

【讨论】:

  • 现在,您是否应该这样做还有待商榷。我想说只有在您要创建和维护自己的完整文档时才应该这样做。请记住,代码生成的文档不会列出这些函数。
【解决方案2】:

你问的是无意义的..
你所有的方法都应该只是return $var

此时,如果您想回显它,您需要执行以下操作:

echo getThing();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2011-06-02
    相关资源
    最近更新 更多