繁体   English   中英

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

[英]Write a user defined class in laravel?

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

完成这些之后,我的班级开始上班了。感谢大家的帮助

为了在Laravel中使用,每个新类都必须链接到Application。 可以用一种以上的方法完成:

Through class map
With namespacing
By its path

从这个意义上讲,没有简单的类。 如果使用composer正确引用了所有类,则它们可以成为Laravel Application流的一部分。

更新至我的答案:

这是解释立面的最佳资源的链接

假设尚未加载文件,则将libs /目录添加到类加载器的正确方法是修改composer.json以将目录添加到自动加载器。

autoload: {
    classmap: [
        "...",
        "libraries/"
    ]
}

之后,您将需要重建自动装带器,因此在主目录中,继续并在终端中运行它:

$ php artisan dump-autoload -o

还要确保您的类实际上包含在名称空间中,因为使用

new libraries\myClass();

不从“库”文件夹中加载“ myClass”。 如果可以将其添加到原始问题中,将很有帮助。

尝试这样做,它应该可以解决您的问题:

ClassLoader::addDirectories(array(
    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/models',
    app_path().'/database/seeds',
    app_path().'/classes', //we added this
    ));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM