在模型中为数据分配和调用变量

时间:2015-01-26 15:24:43

标签: php laravel

如何在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' );

1 个答案:

答案 0 :(得分:1)

在静态方法内部,您无法引用$this,因为没有当前对象。您正在上课环境中工作。因此,您可以重写方法以使用staticself关键字(也将变量更改为静态)或执行类似的操作(Laravel在Model类的多个位置执行此操作以及:

public static function getGreeting( $bar )
{
    $instance = new static;
    $instance->baz( $bar );
    return $instance->greet();
}

这实际上创建了当前类的新实例,然后非静态地调用两个方法。不要忘记删除其他两种方法的static关键字。