Laravel Package Development的简单功能不起作用


Laravel Package Development simple function does not work

很抱歉标题不好,但我不知道该给我的问题一个好的标题。

我用工作台创建了一个包。现在我有一个包裹。比方说strernd/mypkg在工作台目录Strernd/Mypkg中,我有以下代码:http://laravel.io/bin/oNzoa

为什么Mypkg::test()有效而$mypkg = new Mypkg(); $mypkg->test();无效?(在我的应用程序中)错误是Call to undefined method Strernd'Mypkg'Facades'Mypkg::test()Call to undefined method Strernd'Mypkg'Facades'Mypkg::test()

我想我不了解PHP的一些基本原理。我更像是一个复制品&粘贴/尝试&错误为"developer",但在大多数情况下效果良好。

以"static"方式使用它时,Laravel访问您编写的facade并实例化底层类,然后在该实例上调用该方法。当您使用new Mypkg调用test方法时,实际上是在实例化facade类,而不是底层类。该facade类上没有test方法,因此出现了错误。

这样试试:

use Strernd'Mypkg as MypkgActual;
$mypkg = new MypkgActual;
$mypkg->test();

我相信,因为你的facade和实际的类实现有着完全相同的类名,所以你会遇到一个伪类名冲突,Laravel的facade系统会胜出。您也可以尝试将立面的名称更改为MypkgFacade