将 class 注入控制器 - 未定义的变量
Injecting class into controller - undefined variable
我正在尝试在我的控制器中使用自定义 class。过去我使用过存储库和接口,所以我不确定在不使用这些时我在这里做的是否正确。
在我的应用程序目录中,我有一个 classes 文件夹。
我在那里创建了一个名为 "ContactCentreSlideshow" 的新文件夹,然后创建了一个名为 "Slideshow.php"
的 class
这个slideshow.php就是:
namespace Classes\ContactCentreSlideshow;
class Slideshow {
public function get_slideshow_interval()
{
return Constants::where('name', '=', 'slideshow_interval');
}
}
我的控制器是:
use Classes\ContactCentreSlideshow\Slideshow as Slideshow;
class ContactCentreSlideshowController extends BaseController {
protected $slideshow;
public function __construct(Slideshow $slideshow)
{
$this->slideshow = $slideshow;
}
public function get_slideshow_interval()
{
return $slideshow->get_slideshow_interval();
}
}
然而,当我直接从路由调用控制器中的 get_slideshow_interval 方法时收到此错误。:
{"error":{"type":"ErrorException","message":"Undefined variable: slideshow","file":"\/Applications\/MAMP\/htdocs\/project\/app\/controllers\/ContactCentreSlideshowController.php","line":24}}
引用成员变量时(即本例中的$slideshow
),需要在其前面加上$this->
前缀。
get_slideshow_interval
应该是:
public function get_slideshow_interval()
{
return $this->slideshow->get_slideshow_interval();
}
我正在尝试在我的控制器中使用自定义 class。过去我使用过存储库和接口,所以我不确定在不使用这些时我在这里做的是否正确。
在我的应用程序目录中,我有一个 classes 文件夹。
我在那里创建了一个名为 "ContactCentreSlideshow" 的新文件夹,然后创建了一个名为 "Slideshow.php"
的 class这个slideshow.php就是:
namespace Classes\ContactCentreSlideshow;
class Slideshow {
public function get_slideshow_interval()
{
return Constants::where('name', '=', 'slideshow_interval');
}
}
我的控制器是:
use Classes\ContactCentreSlideshow\Slideshow as Slideshow;
class ContactCentreSlideshowController extends BaseController {
protected $slideshow;
public function __construct(Slideshow $slideshow)
{
$this->slideshow = $slideshow;
}
public function get_slideshow_interval()
{
return $slideshow->get_slideshow_interval();
}
}
然而,当我直接从路由调用控制器中的 get_slideshow_interval 方法时收到此错误。:
{"error":{"type":"ErrorException","message":"Undefined variable: slideshow","file":"\/Applications\/MAMP\/htdocs\/project\/app\/controllers\/ContactCentreSlideshowController.php","line":24}}
引用成员变量时(即本例中的$slideshow
),需要在其前面加上$this->
前缀。
get_slideshow_interval
应该是:
public function get_slideshow_interval()
{
return $this->slideshow->get_slideshow_interval();
}