我正在尝试使用一堆辅助函数自动加载一个名称空间:
<?php
namespace App\Str {
function contains($haystack, $needles)
{
foreach ((array)$needles as $needle) {
if ($needle !== '' && mb_strpos($haystack, $needle) !== false) {
return true;
}
}
return false;
}
function starts_with($haystack, $needles)
{
foreach ((array) $needles as $needle) {
if ($needle !== '' && substr($haystack, 0, strlen($needle)) === (string) $needle) {
return true;
}
}
return false;
}
}
Psr-4作曲家自动加载在这里没有帮助:
Call to undefined function App\Str\starts_with()
我知道我不能(懒惰地)自动加载函数,并且我给出了使用静态函数创建类的建议,但是因为我更喜欢函数式编程,所以我想首先研究其他选项 . 例如,我可以以某种方式(懒惰地)自动加载整个命名空间本身吗?我想以下列方式使用此命名空间:
use App\Str as Str;
$test = Str\starts_with('test', 't');
我想以某种方式指定作曲家,如果它看到 App\Str
名称空间,它应该懒得要求文件 app/Str.php
,不确定作曲家是如何工作的,但这样的东西不可能吗?
1 回答
不幸的是,这是不可能的 . 如果你想要非懒惰的自动加载,你必须将它添加到你的composer.json:
每个条目都是带有您的功能的文件名 .