【发布时间】:2018-07-26 04:07:04
【问题描述】:
所以我正在编写一个最终将存在于 git(或任何地方)上的 Laravel 包。
我已经在 /app/ 中创建了此处概述的包结构(https://rathes.de/blog/en/laravel-package,顺便说一句,这是很好的资源),我还创建了一个 Facade.php、PackageServiceProvoder.php 和一个转储“你好”的控制器世界”到浏览器。
我也有一个预先存在的 HomeController.php,我在测试函数中添加了以下内容:
dd(\MyPackage::test());// <-- Should dump "Hello world" and die.
我还在包的 composer.json 文件中添加了以下内容并运行 composer install:
"autoload": {
"psr-4": {
"Company\\LaravelPackageMyPackage\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"Company\\LaravelPackageMyPackage\\Test\\": "tests"
}
},
"extra": {
"laravel": {
"providers": [
"Company\\LaravelPackageMyPackage\\Lar...kageServiceProvider"
],
"aliases": {
"MyPackage": "Company\\LaravelPackageMyPackage\\Facade"
}
}
},
我遇到的问题是,当我在浏览器中运行它时,出现以下错误:
Class 'MyPackage' not found // <-- references the dd() line of code above
我一定是在教程或类似的过程中错过了一个步骤,因为据我所知,它现在应该可以工作了。 有什么建议吗?
Laravel 5.5、PHP 7.1、Ubuntu Linux 操作系统。
这里只写代码:
File structure (very similar to this):
Project -> app -> my-package /
├── database/
│ ├── .gitkeep
├── config/
│ ├── package-name.php
├── src/
│ ├── PackageNameServiceProvider.php
├── tests/
│ ├── TestCase.php
├── .gitignore
├── CHANGELOG.md
├── composer.json
├── LICENSE
├── phpunit.xml
├── README.md
// FACADE:
<?php
namespace Company\LaravelPackageMyPackage;
class Facade extends \Illuminate\Support\Facades\Facade
{
/**
* {@inheritDoc}
*/
protected static function getFacadeAccessor()
{
return 'laravelpackagemypackage';
}
}
// MY PACKAGE
<?php
namespace Company\LaravelPackageMyPackage;
class LaravelPackageMyPackage
{
public function test()
{
return "Hello From My Package!";
}
}
// SERVICE PROVIDER:
<?php
namespace Company\LaravelPackageMyPackage;
use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider;
class LaravelPackageMyPackageServiceProvider extends ServiceProvider
{
protected $defer = false;
public function boot()
{
//$this->loadMigrationsFrom(__DIR__ . '/../database/migrations/');
}
public function register()
{
App::bind('laravelpackagemypackage', function () {
return new LaravelPackageMyPackage();
});
}
}
【问题讨论】:
-
您是如何让 composer 知道您在
app中拥有一个需要由 composer 管理的 composer 包?你在哪里跑composer install?