0

在 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();

并得到“文本 2”

不幸的是,我的方法行不通。

可能吗 ?

请原谅我的语言不好 - 还在学习。

4

3 回答 3

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

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

 }
于 2013-06-16T20:00:18.050 回答
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();

于 2013-06-16T20:04:49.227 回答
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();
于 2013-06-16T19:56:22.217 回答