在经常使用的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”
不幸的是,我的方式不起作用。
有可能吗?
对不起语言 - 还在学习。
答案 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();