如何在Laravel外部的包中使用Laravel facades(缓存、日志、存储)
请指出我对拉威尔、作曲家、菲普尼特等所作的任何天真或不正确的假设 我有一个名为SpeechToTextHelper的类,它位于一个Laravel项目中,它使用如下外观:如何在Laravel外部的包中使用Laravel facades(缓存、日志、存储),laravel,laravel-5,dependencies,composer-php,phpunit,Laravel,Laravel 5,Dependencies,Composer Php,Phpunit,请指出我对拉威尔、作曲家、菲普尼特等所作的任何天真或不正确的假设 我有一个名为SpeechToTextHelper的类,它位于一个Laravel项目中,它使用如下外观: use Cache; use Log; use Storage; 然后,因为我想在多个Laravel项目之间共享它,所以我将它移动到一个单独的回购协议中,并通过Composer将其作为依赖项要求(进入第一个项目) 代码似乎运行良好 我的问题与你的不同 我想知道的是: 现在我还想在我的新工具repo中为SpeechToTextH
use Cache;
use Log;
use Storage;
然后,因为我想在多个Laravel项目之间共享它,所以我将它移动到一个单独的回购协议中,并通过Composer将其作为依赖项要求(进入第一个项目)
代码似乎运行良好
我的问题与你的不同
我想知道的是:
RuntimeException:facade根尚未设置。
和错误:找不到类“Log”
,可能是因为这个工具repo没有意识到Laravel。我想这意味着我的生产代码一直在工作只是副作用P.S.说:“当构建与Laravel交互的第三方包时,最好注入Laravel契约(),而不是使用外观。”“如果您正在构建包,则应该强烈考虑使用合同,因为它们将更容易在包上下文中进行测试。”
但我根本看不到日志或存储的合同。我认为您正在寻找Laravel组件存储库
这表明,您可以如何在laravel之外使用雄辩的语言,我认为这将给您提供更好的想法。我认为您正在寻找laravel组件存储库
composer.json
在“require”部分中仍然有这样的内容:“laravel/framework”:“5.7.*”,
我计划只从Laravel应用程序中需要此工具库。我不确定这是否是一种正确的方法来制定规则,但我的产品代码至少看起来是有效的
用于测试
至于测试,似乎有必要从以下位置添加这些文件:
也许这些是最少的一组裸骨Laravel文件,没有这些文件,测试无法运行
然后我确保每个测试类都扩展了tests/TestCase.php
。我调整了名称空间
我不能肯定这是最好的方法,所以我希望其他人能这样做
将提供更好的答案
用于生产代码
我的composer.json
在“require”部分中仍然有这样的内容:“laravel/framework”:“5.7.*”,
我计划只从Laravel应用程序中需要此工具库。我不确定这是否是一种正确的方法来制定规则,但我的产品代码至少看起来是有效的
用于测试
至于测试,似乎有必要从以下位置添加这些文件:
也许这些是最少的一组裸骨Laravel文件,没有这些文件,测试无法运行
然后我确保每个测试类都扩展了
tests/TestCase.php
。我还调整了名称空间。这很有趣,感觉它在正确的轨道上,但没有回答我的任何问题。例如,不使用日志外观。我不清楚什么是$app=new\Slim\app()代码>意味着或者我将如何在PHPUnit测试中使用它来让它们与我的Log::debug
调用一起工作。这很有趣,感觉它走上了正确的轨道,但没有回答我的任何问题。例如,不使用日志外观。我不清楚什么是$app=new\Slim\app()代码>意味着或者我将如何在我的PHPUnit测试中使用它来让它们与我的Log::debug
调用一起工作。相反,使用Log::debug
我们可以尝试作为app('illighted\Support\Facades\Log')::debug
?@phpdroid我得到“一个门面根尚未设置”。实际上我对app()
的存在方式感到困惑;我看不出这一点在这个项目中是如何定义的。但是Xdebug确实显示调用了app()
,但随后它抛出了RuntimeException。相反,使用Log::debug
我们可以试试app('light\Support\Facades\Log')::debug
?@phpdroid我得到“一个门面根尚未设置”。实际上,我对app()
的存在方式感到困惑;我看不出这一点在这个项目中是如何定义的。但是Xdebug确实显示调用了app()
,但随后它抛出了RuntimeException。
app/Console/Kernel.php
app/Providers/AppServiceProvider.php
app/Providers/AuthServiceProvider.php
app/Providers/EventServiceProvider.php
app/Providers/RouteServiceProvider.php
bootstrap/cache/.gitignore
bootstrap/app.php
bootstrap/autoload.php
config/app.php
config/database.php
config/logging.php
config/view.php
storage/logs/laravel.log
tests/CreatesApplication.php
tests/TestCase.php