如何在laravel模型中为变量分配数据和从中提取数据? 我在PHP中正常使用的方法是
<?php
class Foo {
public $foo = '';
public static function baz( $bar )
{
$this->foo = $bar;
}
public static function greet()
{
return 'Hello ' . $this->foo;
}
public static function getGreeting( $bar )
{
self::baz( $bar );
return self::greet();
}
}
但这不会起作用,我会收到像
这样的错误production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Using $this when not in object context'
那么,你到底如何在变量中添加数据并在laravel模型中调用它?
Controller
echo Foo::getGreeting( 'World' );
答案 0 :(得分:1)
在静态方法内部,您无法引用$this
,因为没有当前对象。您正在上课环境中工作。因此,您可以重写方法以使用static
或self
关键字(也将变量更改为静态)或执行类似的操作(Laravel在Model
类的多个位置执行此操作以及:
public static function getGreeting( $bar )
{
$instance = new static;
$instance->baz( $bar );
return $instance->greet();
}
这实际上创建了当前类的新实例,然后非静态地调用两个方法。不要忘记删除其他两种方法的static
关键字。