在laravel中编写用户定义的类?

时间:2014-02-13 13:46:28

标签: php laravel laravel-4

我在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"
    },

在这些事情之后我的班级正在工作。谢谢所有人帮助我

3 个答案:

答案 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
    ));