【问题标题】:php pass class to functionphp将类传递给函数
【发布时间】:2015-03-08 12:04:32
【问题描述】:

我有一个带有属性 transof 的类

    class translator {
      public function transof($phrase) { gives translation of phrase }
    }

现在我想将翻译器的实例传递给函数:

    function parse($part,$class) {
       $class->transof($part);
    }

    $tr = new translator("project","en");
    parse("exception",$tr);

有人知道怎么做吗? 我知道这个例子很简单,并且可以在不使用函数的情况下轻松编写,但在我的真实示例中,我希望能够使用函数。

当然可以在函数中使用全局$tr,在函数内部使用,但我不喜欢使用全局。

提前致谢

【问题讨论】:

  • 好像你在混合程序编程和OOP。你到底想达到什么目标?
  • 你的解析函数没有返回任何值,还是你想在你的类的transof方法中打印消息?
  • 你在上面的代码中是否有任何错误?

标签: php function class


【解决方案1】:

如果您不想在全局代码中创建对象以获得更好的可维护性,则需要修改函数的签名如下:

function parse($part,$project,$lang) {
   $class = new Translator($project,$lang);
   $class->transof($part);
}
parse("exception","project","en");

【讨论】:

    【解决方案2】:

    它做你想做的事,对象被传递给函数解析。您需要做的就是在包含解析定义的 php 文件中或之前包含类定义文件,或者使用 __autoload() 函数,该函数将在需要时包含类定义。 你也可以这样定义解析:

    function parse($part, translator $class) {
           $class->transof($part);
    }
    

    然后像 Aptana 等代码编辑器将知道该对象是哪个类的实例,并能够为您提供有关您的类结构的提示。

    【讨论】:

    • 谢谢,这就是我要找的。会投票,但没有足够的积分,或其他东西。
    • @user3759722 我很高兴它有帮助。但是,无论代表如何,您都可以接受此答案! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2013-01-16
    • 1970-01-01
    • 2012-07-15
    • 2019-10-11
    • 2022-01-22
    相关资源
    最近更新 更多