Laravel: 命名空间中的自定义函数
Laravel: custom functions in namespace
是否可以在命名空间中使用我的辅助函数?
我当前的设置(我无法工作)是:
app\Helpers\simple_html_dom.php:
<?php
namespace App\Helpers\HtmlDomParser;
function file_get_html(){
echo 'file_get_html() called';
}
composer.json
"autoload": {
"files": [
"app/Helpers/simple_html_dom.php",
"app/Helpers/common.php"
],
"psr-4": {
"App\": "app/",
"Database\Factories\": "database/factories/",
"Database\Seeders\": "database/seeders/"
}
},
app\Services\dde\dde_trait.php
<?php
namespace App\Services\dde;
use App\Helpers\HtmlDomParser;
trait ddeTrait{
public function parse(){
$content = HtmlDomParser::file_get_html();
}
}
我收到的错误是 Class“App\Helpers\HtmlDomParser”未找到。
但是 HtmlDomParser 不是 class 而是命名空间。
将 file_get_html()
函数放入 HtmlDomParser class 是唯一正确的设置吗? Laravel版本:8+
您没有定义 class“HtmlDomParser”,只定义了命名空间“App\Helpers\HtmlDomParser”。要调用此命名空间中的函数,请使用完整限定版本:
App\Helpers\HtmlDomParser\file_get_html().
您可以参考这个页面:https://www.php.net/manual/en/language.namespaces.rules.php
You can do like this.
1- remove namespace from helper file.
app\Helpers\simple_html_dom.php:
<?php
function file_get_html(){
echo 'file_get_html() called';
}
2- your composer.json looks fine. just make sure you run below command after adding helper filein autoload section.
* composer du
* php artisan config:cache
3- call helper function directly without namespace in file app\Services\dde\dde_trait.php
namespace App\Services\dde;
trait ddeTrait{
public function parse(){
$finstat_content = file_get_html();
}
}
是否可以在命名空间中使用我的辅助函数?
我当前的设置(我无法工作)是:
app\Helpers\simple_html_dom.php:
<?php
namespace App\Helpers\HtmlDomParser;
function file_get_html(){
echo 'file_get_html() called';
}
composer.json
"autoload": {
"files": [
"app/Helpers/simple_html_dom.php",
"app/Helpers/common.php"
],
"psr-4": {
"App\": "app/",
"Database\Factories\": "database/factories/",
"Database\Seeders\": "database/seeders/"
}
},
app\Services\dde\dde_trait.php
<?php
namespace App\Services\dde;
use App\Helpers\HtmlDomParser;
trait ddeTrait{
public function parse(){
$content = HtmlDomParser::file_get_html();
}
}
我收到的错误是 Class“App\Helpers\HtmlDomParser”未找到。
但是 HtmlDomParser 不是 class 而是命名空间。
将 file_get_html()
函数放入 HtmlDomParser class 是唯一正确的设置吗? Laravel版本:8+
您没有定义 class“HtmlDomParser”,只定义了命名空间“App\Helpers\HtmlDomParser”。要调用此命名空间中的函数,请使用完整限定版本:
App\Helpers\HtmlDomParser\file_get_html().
您可以参考这个页面:https://www.php.net/manual/en/language.namespaces.rules.php
You can do like this.
1- remove namespace from helper file.
app\Helpers\simple_html_dom.php:
<?php
function file_get_html(){
echo 'file_get_html() called';
}
2- your composer.json looks fine. just make sure you run below command after adding helper filein autoload section.
* composer du
* php artisan config:cache
3- call helper function directly without namespace in file app\Services\dde\dde_trait.php
namespace App\Services\dde;
trait ddeTrait{
public function parse(){
$finstat_content = file_get_html();
}
}