Laravel 将您自己的helpers.php添加到composer.json

Laravel 将您自己的helpers.php添加到composer.json,laravel,laravel-5.1,Laravel,Laravel 5.1,在这个主题之后,我需要一些帮助来完成已经开始的工作 所以我在app文件夹中创建了一个文件夹:Customs 然后,我创建了一个helpers.php文件,该文件包含以下代码: <?php use Illuminate\Support\Str; if (! function_exists('str_slug')) { /** * Generate a URL friendly "slug" from a given string. * * @param

在这个主题之后,我需要一些帮助来完成已经开始的工作

所以我在app文件夹中创建了一个文件夹:Customs 然后,我创建了一个helpers.php文件,该文件包含以下代码:

<?php
use Illuminate\Support\Str;

if (! function_exists('str_slug')) {
    /**
     * Generate a URL friendly "slug" from a given string.
     *
     * @param  string  $title
     * @param  string  $separator
     * @return string
     */
    function my_slug($title, $separator = '-')
    {
        $title = str_replace('\'','_',$title);
        return Str::slug($title, $separator);
    }
}
我不明白我现在该怎么办。。。psr-4已经说整个应用程序文件夹都是自动加载的,不是吗

我还尝试将完整路径放到helpers.php,但也没有成功


我做错了什么?

您的自动加载应该是这样的:

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

其中
文件
是您的自定义文件。此外,正如在网站问题的“使用自定义函数”中提到的,我建议您使用traits,例如
trait StringSluggify
。它保持了OOP方式。

您的自动加载应该有如下内容:

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

其中
文件
是您的自定义文件。此外,正如在网站问题的“使用自定义函数”中提到的,我建议您使用traits,例如
trait StringSluggify
。它保持OOP方式。

在您的视图中使用它{{my_slug($collection->value)}或在您的控制器中使用名称空间App\customs\my_slug($value)或将use\App\customs添加到控制器顶部,然后在您的视图中使用它{{my_slug($collection->value)}或者在控制器中使用名称空间App\customs\my\u slug($value)或将use\App\customs添加到控制器顶部,然后添加my\u slug($value)

  • app/
    中创建一个名为
    Helpers
    的文件夹
  • 应用程序/助手的内部
    创建自定义类

    namespace App\Helpers;
    
    class FooHelper{
    
        public static function bar(){
            return 'bar';
        }
    }
    
  • 运行
    composer dump autoload
    更新autoload

  • 现在,您可以在这里使用助手功能,如:

    $bar = \App\Helper\FooHelper::bar();
    
    public function controllerFunction(){
        $bar = \Foo::bar();
    }
    
    如果您的计划是附加一个立面,则在
    config/app.php
    中编辑立面数组,如下所示:

    'Foo' => \App\Helpers\FooHelper::class
    
    现在,您可以调用以下函数:

    $bar = \App\Helper\FooHelper::bar();
    
    public function controllerFunction(){
        $bar = \Foo::bar();
    }
    
  • app/
    中创建一个名为
    Helpers
    的文件夹
  • 应用程序/助手的内部
    创建自定义类

    namespace App\Helpers;
    
    class FooHelper{
    
        public static function bar(){
            return 'bar';
        }
    }
    
  • 运行
    composer dump autoload
    更新autoload

  • 现在,您可以在这里使用助手功能,如:

    $bar = \App\Helper\FooHelper::bar();
    
    public function controllerFunction(){
        $bar = \Foo::bar();
    }
    
    如果您的计划是附加一个立面,则在
    config/app.php
    中编辑立面数组,如下所示:

    'Foo' => \App\Helpers\FooHelper::class
    
    现在,您可以调用以下函数:

    $bar = \App\Helper\FooHelper::bar();
    
    public function controllerFunction(){
        $bar = \Foo::bar();
    }
    

    谢谢,但我仍然有一个问题:
    调用未定义的函数App\Http\Controllers\my_slug()
    。我不知道什么是特质。。。我稍后再看。@Ennicolem如何使用函数
    my_slug()
    ?是否使用指针
    $this->my_slug()
    ;$publisher=newpublisher(['name'=>$input['name'],'slug'=>my_slug($input['name'],'-')));$publisher->save()这是不必要的,
    psr-4已经说整个应用程序文件夹是自动加载的
    @manix否,这告诉它只能自动加载类。如果您希望任何类之外的函数在任何地方都可用,而不需要手动包含它,那么您必须将其添加到文件数组中,但我仍然有一个问题:
    调用未定义的函数App\Http\Controllers\my_slug()
    。我不知道什么是特质。。。我稍后再看。@Ennicolem如何使用函数
    my_slug()
    ?是否使用指针
    $this->my_slug()
    ;$publisher=newpublisher(['name'=>$input['name'],'slug'=>my_slug($input['name'],'-')));$publisher->save()这是不必要的,
    psr-4已经说整个应用程序文件夹是自动加载的
    @manix否,这告诉它只能自动加载类。如果您希望任何类之外的函数在任何地方都可用,而不需要手动包含它,那么您必须将其添加到文件arrayHi中,这非常有用,但在我的情况下并非如此。我想。。。slug已经有了一个类,我想改进它。既然Laravel提供函数,为什么不创建一个与Laravel的类95%相同的新类,我不应该创建一个使用该类但添加新元素的新函数呢?嗨,这很有帮助,但在我的情况下不是这样。我想。。。slug已经有了一个类,我想改进它。既然Laravel提供函数,为什么不创建一个与Laravel的类95%相同的新类,而创建一个使用该类的新函数,而是添加一个新元素?