Laravel Package开发简单的功能不起作用

时间:2014-09-25 14:47:17

标签: php laravel package

抱歉标题不好,但我不知道为我的问题打好标题。

我用工作台创建了一个包。现在我有一个包。让我们说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的一些基本原则。我更喜欢复制和粘贴/尝试和错误“开发人员”,但在大多数情况下它运作良好。

1 个答案:

答案 0 :(得分:0)

使用时,静态'方式,Laravel正在访问您编写的外观并实例化底层类,然后在该实例上调用该方法。当您使用test调用new Mypkg方法时,实际上是实例化 facade 类,而不是底层类。该Facade类没有test方法,因此错误。

试试这样:

use Strernd\Mypkg as MypkgActual;

$mypkg = new MypkgActual;
$mypkg->test();

我相信,因为你的外观和实际的类实现具有完全相同的类名,所以你在Laravel的外观系统中赢得了伪类名称冲突。您也可以尝试将外观名称更改为MypkgFacade