gpt4 book ai didi

php - Laravel:从公共(public)静态函数访问类变量(基本的 oop 问题)

转载 作者:可可西里 更新时间:2023-11-01 00:20:53 25 4
gpt4 key购买 nike

编辑

与此同时,这个问题被访问了几次。只是为了分享我在 stackoverflow 和其他资源的帮助下学到的知识,我不建议使用我要求的技术。一种更简洁的方法是在 Controller 中附加一个包含数据库文本的变量:

$txt = Model::find(1);
return view('name', array('text' => $txt->content);

现在您可以像这样访问 View 中的文本

{{ $text ?? 'Default' }}

但是,如果您目前还忙于基本的 oop 和/或 mvc 架构,请继续阅读。也许它有帮助:-)


原始问题

我试图输出一些从数据库加载的文本。这是我的设置:

查看:

{{ ContentController::getContent('starttext') }}

Controller :

class ContentController extends BaseController {

public $text = '';

public static function getContent($description)
{
$content = Content::where('description', $description)->get();
$this->text = $content[0]->text;

return $this->text;
}

}

我尝试了各种方法来声明一个类变量并在我的函数中访问它,但我总是以:

不在对象上下文中时使用 $this

说实话,我想我缺乏一些基本的 oop 知识:-D

最佳答案

静态方法无法访问 $this$this 指的是一个实例化类(一个用new语句创建的对象,例如$obj = new ContentController()),和静态方法不在对象内执行。

您需要做的是将所有的$this 更改为self,例如self::$text 访问类中定义的static 变量。然后你需要将 public $text = ''; 更改为 public static $text = '';

这就是为什么静态方法/变量在大多数时候都是不好的做法......

不是 Laravel 的专家,但我确定你不需要使用静态方法将变量传递到模板中......如果是这样的话,我会远离 Laravel......

关于php - Laravel:从公共(public)静态函数访问类变量(基本的 oop 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24062385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com