Laravel 将您自己的helpers.php添加到composer.json
在这个主题之后,我需要一些帮助来完成已经开始的工作 所以我在app文件夹中创建了一个文件夹:Customs 然后,我创建了一个helpers.php文件,该文件包含以下代码: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
<?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%相同的新类,而创建一个使用该类的新函数,而是添加一个新元素?