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

Php 在laravel中编写用户定义的类?,php,laravel,laravel-4,Php,Laravel,Laravel 4,我在libraries/myclass.php中有一个类和一个名为myFunction的函数。我还尝试用以下代码在控制器中调用该函数 $myclasobj=new libraries\Myclass(); $returnvalue=$myclasobj->myFunction($para); 未找到该类的结果。我不想它作为一个助手类和自动加载这个类。我只想作为一个简单的类使用。我使用的是Laravel4。我怎样才能得到这个 更新 感谢大家的大力帮助。 根据@carousel,@ohgod

我在
libraries/myclass.php
中有一个类和一个名为
myFunction
的函数。我还尝试用以下代码在控制器中调用该函数

$myclasobj=new libraries\Myclass();
$returnvalue=$myclasobj->myFunction($para);
未找到该类的结果。我不想它作为一个助手类和自动加载这个类。我只想作为一个简单的类使用。我使用的是Laravel4。我怎样才能得到这个

更新
感谢大家的大力帮助。
根据@carousel,@ohgod为什么我使用名称空间(实际上在我不知道它之前)。
我在名为
mylib
的库下创建一个目录,并将我的类(
myclass.php
)移动到其中,然后添加
名称空间mylib
myclass.php
的顶部
然后我添加
使用mylib\Myclass到我的控制器。
最后,我将这些行添加到composer.json

,
 "psr-0": {
        "mylib": "app/libraries"
    },

在这些事情之后,我的课程开始工作了。感谢大家帮助我

为了在Laravel中使用,每个新的课程都必须链接到应用程序。可以通过多种方式完成:

Through class map
With namespacing
By its path
从这个意义上讲,没有简单的类。如果composer正确引用了所有类,则所有类都可以成为Laravel应用程序流的一部分

更新我的答案:


这里有一个最好的资源来解释外观。

为了在Laravel中使用,每个新类都必须链接到应用程序。可以通过多种方式完成:

Through class map
With namespacing
By its path
从这个意义上讲,没有简单的类。如果composer正确引用了所有类,则所有类都可以成为Laravel应用程序流的一部分

更新我的答案:


这里有一个解释外观的最佳资源。

尝试这样做,它会解决您的问题:

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

尝试这样做,它会解决您的问题:

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

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

autoload: {
    classmap: [
        "...",
        "libraries/"
    ]
}
之后,您将需要重建自动加载器,因此在主目录中,继续在您的终端中运行此操作:

$ php artisan dump-autoload -o
还要确保类实际上包含在名称空间中,因为使用

new libraries\myClass();

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

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

autoload: {
    classmap: [
        "...",
        "libraries/"
    ]
}
之后,您将需要重建自动加载器,因此在主目录中,继续在您的终端中运行此操作:

$ php artisan dump-autoload -o
还要确保类实际上包含在名称空间中,因为使用

new libraries\myClass();


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

您的命名空间在哪里定义
libraries
不指示目录在本例中,您使用的是命名空间来访问该类,但该命名空间中不存在该类。请稍候,我使用名称空间尝试使用命名空间
use app\libraries\Myclass但仍然出错每个人都在这里投票。原因是什么?我不知道。我没有投任何反对票..您的命名空间在哪里定义
libraries
不指示目录在本例中,您使用的是命名空间来访问该类,但该命名空间中不存在该类。请稍候,我使用名称空间尝试使用命名空间
use app\libraries\Myclass但仍然出错每个人都在这里投票。原因是什么?我不知道。我没有投任何反对票。我建议不要使用
路径
,关于
类映射
,在laravel中,它被称为
门面类
。你能给出一些使用这个的例子吗?我不太明白,但我想说一下如何做到这一点。最佳做法是为所有类命名。manuthalasseril请重新参考一些好的composer/laravel教程。这是一个很大的主题,这里无法涵盖。我想看看投票否决我的帖子的理由。我建议不要使用
路径
,关于
类映射
,在laravel中,它被称为
门面类
,你能给出一些我不太理解的例子吗,但我想说的是如何做到这一点。最佳做法是为所有类命名。manuthalasseril请重新参考一些好的composer/laravel教程。这是一个很大的主题,这里无法涵盖。我想看看投票否决我的帖子的理由。应该是classmap和composerdumpautoload@carousel使用artisan更静态,因为我不知道asker的composer安装在哪里。它也应该是
composer dump autoload
(带连字符),它应该是classmap和composerdumpautoload@carousel使用artisan更静态,因为我不知道asker的composer安装在哪里。它也将是
composer dump autoload
(带有连字符)。