Где я могу разместить свои пользовательские классы и функции в Laravel - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь создать класс с некоторыми часто используемыми функциями, которые я могу использовать из любой точки моего проекта.Я не знаю, где создать файл PHP с классами или как их вызывать ... Может кто-нибудь помочь мне понять, где все это вписывается?СПАСИБО !!!

/ App / Http / Helpers / MyClasses.php

<?php

class PopularFunctions {
  public function sayhi() {
    echo 'hi';
  }
}

?>

/ App / Http / Controllers / TasksController.php

<?php

namespace App\Http\Controllers;

use App\Http\Helpers\MyClasses;

class TasksController extends Controller {

  public function index() {

    $myfunctions = new PopularFunctions();
    $myfunctions->sayhi();

  }

}

Возвращает: Класс 'App \ Http \ Controllers \ PopularFunctions' не найден.

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

создайте каталог, скажем "Помощники" внутри App / Http

создайте один класс внутри каталога Помощников CustomAvatar.php

<?php

class CustomAvatar{
    public $default_avatar='avatar.png';

    public function make_custom_avatar(){
        // do your operation here
    }
}

?>

сейчас, если вы хотите использоватьэтот класс внутри вашего контроллера:

use App\Http\Helpers\CustomAvatar;

 ...

 public function create_user(){

 $customAvatar=new CustomAvatar();
 $defaultAvatar = $customAvatar->default_avatar;

 $user=new User();
 $user->avatar=$defaultAvatar;
 $user->save();

 }
0 голосов
/ 24 ноября 2018

1.Через Composer

App / Http / Helpers / MyClasses.php

<?php
function sayhi() {
    echo 'hi';
}
?>

, затем в composer.json в "autoload": { } добавьте

"files": [
    "app/Http/Helpers/MyClasses.php"
]

, поэтомуструктура будет

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

после изменения автозагрузки.Затем запустите composer dump-autoload

, затем в контроллере просто вызовите функцию в ваших помощниках

public function index() {
  $res = say_hi();
}

2.Класс

Приложение / Http / Helpers / MyClasses.php

<?php
namespace App\Http\Helpers;
class MyClassess {
    function sayhi() {
        echo 'hi';
    }
}

?>

В вашем контроллере

<?php

namespace App\Http\Controllers;

use App\Http\Helpers\MyClasses;

class TasksController extends Controller {

  public function index() {

    $myfunctions = new MyClasses();
    $res = $myfunctions->sayhi();

  }

}
0 голосов
/ 22 ноября 2018

В Laravel Framework вы можете создать контроллер только в папке app \ Http \ Controller.Если вы хотите создать пользовательский класс, создайте его в папке приложения.

Пример:

Файл: app \ FAReports.php

Пространство имен App;

Класс FAReports {

// DEF //

}

...