我对如何将自己的代码(类或常规函数)加载到Laravel应用程序感到困惑。我已经通过几种方式看到了这一点:
app/libs
)并将app_path().'/libs'
添加到start/global.php
composer.json
的{{1}} "require"
添加到"psr-0"
的{{1}}并添加文件composer.json
添加到"autoload"
的{{1}}和外观的别名他们之间有什么区别?为什么以及何时应该使用这些方法?我应该加载一个类,几个.php文件还是只加载文件夹?也许同时引用这3件事情?
这些是我的猜测:
My\Custom\Service\Provider
而不是仅将其添加到app/config/app.php
)关于选项4:
如果您将其添加到'providers'
:
"psr-0"
将加载"classmap"
文件夹内文件中任何名称空间的每个类
如果您将其添加到"classmap"
:
"classmap": [
"app/libs"
]
它会加载app/libs
文件夹中"psr-0"
名称空间内的每个类
仍然不确定为何/何时使用服务提供商和别名。
"psr-0": {
"Libs": "app/"
}
如果我想加载一个跟在文件夹结构中的命名空间(如果它与子文件夹结构不匹配,它将不会在子名称空间中加载一个类)
Libs
用于“随机”类,函数......排序“其余”
答案 0 :(得分:0)
您可以在laravel中加载自己的代码2(可能是3种)。
是的,你是对的。选项2仅适用于包
是的,你是对的。选项1与选项3相同,仅由Laravel处理而不是 作曲家
某些包或类符合psr-0标准,其余不是。 psr-0选项是将命名空间映射到目录。 classmap是映射 命名空间到某个目录或文件,并用于不符合psr-0标准的类。选项3如果要加载自定义命名空间中的每个类 在新创建的文件夹中声明(不要理解为什么“psr-0” 而不是仅将其添加到“classmap”)
如果您想在代码的任何位置使用外观,那就可以了 需要将名称空间添加到composer.json
中
nope,您必须在app/config/app.php
files
classmap
或只将包含目录添加到app/start/global.php
。psr-0
或psr-4
。答案 1 :(得分:0)
在Laravel 4中,我将所有课程添加到" mylibrary"文件夹中。
然后在 app / start / global.php ,我添加 app_path()。' / mylibrary',
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/mylibrary',
));
在mylibrary中有MyClass.php,在MyClass.php中有test_myfunction()
并在app / view / home.blade.php我添加以下代码:
<?php
$FMyClass11 = new MyClass;
$just_test=($FMyClass1->test_myfunction());
?>
希望它适合你。 :)