我在libraries/myclass.php
中有一个班级,还有一个名为myFunction
的函数。此外,我尝试使用以下代码在我的控制器中调用该函数
$myclasobj=new libraries\Myclass();
$returnvalue=$myclasobj->myFunction($para);
结果找不到该课程。我不希望它作为帮助类并自动加载此类。我只是想用作一个简单的类。我正在使用laravel 4.我怎么能得到它?
更新
非常感谢大家的帮助。
按照@ carousel,@ Ohgodwhy我是通过命名空间来实现的(实际上在我不知道之前)。
我在名为mylib
的库下创建了一个目录,并将我的类(myclass.php
)移到它上面,之后我将namespace mylib;
添加到myclass.php
的顶部。
然后我将use mylib\Myclass;
添加到我的控制器。
最后,我将这些行添加到composer.json
,
"psr-0": {
"mylib": "app/libraries"
},
在这些事情之后我的班级正在工作。谢谢所有人帮助我
答案 0 :(得分:2)
为了在Laravel中使用,每个新类都必须链接到Application。它可以通过多种方式完成:
Through class map
With namespacing
By its path
从这个意义上说,没有简单的课程。如果使用composer正确引用了所有类,则它们可以成为Laravel Application流程的一部分。
更新我的回答:
这是一个link到最佳资源,可以解释外墙。
答案 1 :(得分:2)
假设文件尚未加载,将 libraries / 目录添加到类加载器的正确方法是修改composer.json以将目录添加到自动加载器
autoload: {
classmap: [
"...",
"libraries/"
]
}
之后,您需要重建自动加载器,因此在主目录中,继续在终端中运行:
$ php artisan dump-autoload -o
还要确保您的类实际包含在命名空间内,因为使用
new libraries\myClass();
不加载" myClass"来自"图书馆"夹。如果您可以将其添加到原始问题中会很有帮助。
答案 2 :(得分:1)
尝试这样做,它应该可以解决您的问题:
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/classes', //we added this
));