Как автоматически загрузить пространство имен службы в laravel 5.6 - PullRequest
0 голосов
/ 01 января 2019

Я создал несколько библиотечных сервисов в app\Library.Я использовал AppServiceProvider для привязки этой службы, используя следующий код:

$this->app->bind('App\Library\Globalfunction', function ($app) {
    return new Globalfunction();
});

app \ Library \ Globalfunction.php

<?php
namespace App\Library;

    class Globalfunction {
        protected $_ci;
        public $siteConfig=array();
        public $smtpConfig=array();
        public $socialConfig=array();

        public $paramConfig;
        public $paramFrom;

        public function test($param) {
            return $param;
        }
    }
?>

Чтобы использовать этот тест ()в контроллере я включаю пространство имен, используя следующее:

use App\Library\Globalfunction;

как только пространство имен включено, я использую следующий код:

$globalFunction = new Globalfunction();
echo $globalFunction->test('hello');

Весь этот код работает нормально, но я не хочу добавлятьuse App\Library\Globalfunction; в каждом файле, так что я могу это сделать?Есть ли какой-нибудь файл автозагрузки, куда я могу положить это, и я могу получить доступ к Globalfunction?

Я решил использовать это решение Google, и я попробовал несколько решений, таких как добавить это в composer или создать пакет и т. д., но это не работает, поэтому, пожалуйста, еслиУ кого-нибудь есть решение этой проблемы, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 01 января 2019

Может быть, вы можете использовать тот же подход, что и Laravel?

Позвольте привести пример того, как этого добиться.

Сначала создайте файл Helpers.php в app/Helpers.php.Вы также должны загрузить его.

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories",
        "database/providers"
    ],
    "files": [
        "app/Helpers.php"
    ],
    "psr-4": {
        "App\\": "app/"
    }
}

Как только это будет сделано, вы можете определить функцию как таковую в вашей недавно загруженной Helpers.php:

if(! function_exists('global_function')) {

    function global_function()
    {
        return new \App\Library\Globalfunction();
    }
}

Затем, чтобы использовать ее где угодно, вы можете просто сделать это.

global_function()->test('hello');

Это простой пример.Очевидно, есть много соображений, которые вы должны сделать, прежде чем реализовать это.Тем не менее, Laravel имеет аналогичный подход к предоставлению глобальных вспомогательных функций.Например:

use Illuminate\Support\Facades\Session; 

// This
echo Session::get('key'); 

// is the same as 

echo session()->get('key'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...