我正在尝试使用laravel按类实现全局函数,这是我的方法:
创建一个新类:app/libraries/regex.class.php
:
class Regex{
public static function isUsername($username){
$regex = "/^[a-zA-Z0-9_]+$/";
if (preg_match($regex, $username))
return true;
else
return false;
}
}
将新库文件夹添加到app/start/global.php
:
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/libraries',
));
然后在路由调用的视图中使用该函数:
if(Regex::isUsername($_REQUEST['username'])==true){
echo "<br><br>did it";
}
else{
echo "<br><br>failed it";
}
如果我将isUsername()
函数放在我使用它的视图的顶部,它可以正常工作但尝试使其全局抛出错误。但是我得到:Class 'Regex' not found
在我尝试使用它的视图中的行。显然它没有上课,但我不明白为什么?
编辑:我能够通过将require app_path().'/libraries/regex.class.php';
添加到全局文件的末尾来使其工作,它现在可以正常工作,但我仍然想知道为什么自动加载的原始尝试不起作用
答案 0 :(得分:1)
您应该根据文件所包含的类命名文件,因此在这种情况下,应将其命名为Regex.php
。 Laravel类加载器在以这种方式命名的文件中查找类。
您还应该确保已将libraries文件夹添加到composer.json中的autoload.classmap部分。