在类的静态函数内调用函数

时间:2013-06-16 19:52:50

标签: php oop

在经常使用的laravel框架中 - Model :: find($ id) - > orderedBy(param);

我想知道如何实现这样的表达。我从这开始:

 Class Test
 {
    static public function write()
    {
       echo "text no 1";

       function second()
       {
          echo "text no 2";
       }
     }
 }

现在我在做的时候

Test::write();

我得到“文字没有1”

我想要做的是:

Test::write()->second();

并获取“text no 2”

不幸的是,我的方式不起作用。

有可能吗?

对不起语言 - 还在学习。

3 个答案:

答案 0 :(得分:0)

Model::find($id)->orderedBy(param)只是意味着静态方法find返回对象,然后执行方法orderBy

示例:

Class Test1
{
    public function say_hello()
    {
        echo 'Hello!';
    }
}

Class Test2
{
    static public function write()
    {
        $obj = new Test1();
        return $obj;
    }
}

Test2::write()->say_hello();

答案 1 :(得分:0)

Class Test
 {
    static public function write()
    {
      echo "text no 1";
      return new Test();
    }

    function second()
    {
          echo "text no 2";
    }

 }

答案 2 :(得分:0)

逻辑上不可能,在调用second()之前不能调用Test::write(),之后可以调用它,因为之后PHP将重新声明该函数。所以你需要改变你的方法。

如果从write()方法返回对象,则可以。

Class Test
 {
    static public function write()
    {
       echo "text no 1";
       return new Test(); //return the Test Object
    }

    function second()
    {
          echo "text no 2";
    }

 }

现在您可以致电Test::write()->second();