2
我試圖用laravel類來實現全局函數,我的繼承人的形式給出:全局類無法識別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';
全球文件的結尾工作,現在的工作,但我還是想知道爲什麼在自動裝填沒有工作,原來atempt
完美工作。我不贊成laravel在這裏強制執行的命名約定。 beech加入到composer.json的推理是什麼?它的工作原理沒有這樣做,只是試圖弄清楚目前laravel的怪癖。 – Halter
當你運行composer時,它會創建一個autoload_classmap.php文件,它將一個索引映射到它們定義的文件中。這與Laravel的類加載器不同,它可以找到你的類,不管你命名文件,但是你需要Laravel的類加載器也能夠找到它。我不確定確切的機制(只是足以解決問題),但我認爲Laravel類加載器速度較慢,並且在您每次更改文件而不運行作曲者時都會作爲備份。 global.php中的評論暗示了這種情況。 –