我在哪里将自定义类和函数放在Laravel中

时间:2018-11-22 19:04:14

标签: php laravel function class namespaces

我正在尝试使用一些可以在项目中的任何地方使用的常用函数构建一个类。我不知道该在哪里构建带有类的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'。

4 个答案:

答案 0 :(得分:0)

在Laravel Framework中,您只能在app \ Http \ Controller文件夹内创建一个控制器。如果要创建自定义类,则在app文件夹中创建。

示例:

文件:app \ FAReports.php

  

命名空间应用;

     

FAReports类      

// DEF //

     

}

答案 1 :(得分:0)

App / Http

内创建一个名为“ Helpers”的目录

在Helpers目录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();

 }

答案 2 :(得分:0)

1。通过Composer

App / Http / Helpers / MyClasses.php

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

然后在"autoload": { }的composer.json中添加

"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。班级

App / 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();

  }

}

答案 3 :(得分:0)

您的原始代码无效,因为您没有为助手类命名空间。 应该是:

/App/Http/Helpers/MyClasses.php

<?php

namespace App\Http\Helpers;  //this was missing in your code

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

?>