Как добавить пользовательский класс в laravel 5.4.10 - PullRequest
0 голосов
/ 27 августа 2018

Я новичок в Laravel.Я пишу следующий код в методе контроллера.

include_once(app_path() .'/Classes/Pgp_2fa.php');
$pgp = new Pgp_2fa();

Отображаются следующие ошибки.

FatalThrowableError в строке AuthController.php 146: Class 'App \ Http \ Controllers \ Pgp_2fa'не найдено

Ответы [ 5 ]

0 голосов
/ 27 августа 2018

Когда вы добавляете новые классы, есть несколько способов их использования.(Я имею в виду, загрузить их)

Если ваши классы имеют уникальное имя и не используют пространство имен, вы можете добавить обратную косую черту \ начало класса.

$class = new \Pgp_2fa;

Но если вы хотите определить их пространства имен и использовать их с одним и тем же именем много раз, то вам нужно добавить эти классы в composer.json.Откройте ваш composer.json и зайдите в раздел «автозагрузка» и определите каталог классов в classmap

"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories",
            "app/Classes",     // so all classes in this directory are going to load     
        ],

И не забудьте сказать composer dump-autoload после этих изменений и создания новых классов

Если вы не хотите создавать дамп своего композитора при добавлении нового класса, вы можете добавить эти классы внутри секции psr-4 в композиторе

"autoload": {

    "psr-4": {
        "App\\": "app/",
        "App\\Classes\\": "app/Classes",

    }
},
0 голосов
/ 27 августа 2018

Вы можете легко добавить свои собственные классы, добавив их в массив автозагрузки Composer.Перейдите в composer.json и добавьте его в:

"autoload": {
    "files": [
      "app\\Classes\\Pgp_2fa.php"
    ]
  },

Теперь в папке вашего приложения, в папке классов, добавьте файл Pgp_2fa.php, в котором будет ваш класс.Вы можете использовать его где угодно, он должен автоматически загружаться автоматически.

После добавления команды записи класса:

dumpautoload композитора для обновления отображения классов автозагрузки.

0 голосов
/ 27 августа 2018

вам нужно добавить пространство имен для вашего пользовательского класса или просто добавить косую черту к имени вашего класса.как:

$pgp = new \Pgp_2fa();
0 голосов
/ 27 августа 2018

Вы можете вызвать внутри конструктора, как показано ниже, и вы можете использовать переменную $ Pgp_2fa в оставшейся функции

 class controllername extends Controller
      {
        public function __construct(Route $route,Request $request)
          { 
            $Pgp_2fa = new \Pgp_2fa();
          }
      }
0 голосов
/ 27 августа 2018

Вы должны использовать правильное пространство имен для вашего класса.

Если вы не используете какое-либо пространство имен, вы должны добавить \ перед классом, чтобы php знал, что класс существует в корневом пространстве имен.В противном случае php будет смотреть в текущем пространстве имен, которое равно App\Http\Controllers, когда вы находитесь в контроллере.

$pgp = new \Pgp_2fa();

Это не просто поведение Laravel, а php в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...