Osc*_*llo 8 php laravel laravel-4
我正在使用Laravel 4.2做一个项目,我需要在控制器中包含一个PHP文件(一个将PDF转换为文本的库),然后返回带有文本的变量,任何想法如何?
这是我的控制器:
public function transform() {
include ('includes/vendor/autoload.php');
}
Run Code Online (Sandbox Code Playgroud)
还有我的/app/start/global.php文件:
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/includes',
));
Run Code Online (Sandbox Code Playgroud)
这是错误:
include(includes/vendor/autoload.php): failed to open stream: No such file or directory
Run Code Online (Sandbox Code Playgroud)
elu*_*ong 16
您可以在app目录中的某个位置创建新目录,例如, app/libraries
然后在您的composer.json文件中,您可以包含app/libraries在自动加载类图中:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.2.*",
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/libraries", <------------------ YOUR CUSTOM DIRECTORY
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable",
}
Run Code Online (Sandbox Code Playgroud)
确保composer dump-autoload在修改composer.json之后运行.
假设你的类名被调用CustomClass.php,它位于app/libraries目录中(所以完整的路径是app/libraries/CustomClass.php).如果按照惯例对类进行了正确命名,则可能会命名您的命名空间libraries.为了清楚起见,我们将调用我们的命名空间custom以避免与目录混淆.
$class = new \custom\CustomClass();
Run Code Online (Sandbox Code Playgroud)
或者,您可以在app/config/app.php文件中为其指定别名:
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => array(
...
'CustomClass' => 'custom\CustomClass',
...
)
Run Code Online (Sandbox Code Playgroud)
您可以像应用任何其他类一样在应用程序的任何位置实例化该类:
$class = new CustomClass();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
我认为你是对的兄弟,但是,我找到了另一种方式,也许不是正确的方式,但它有效.
就像这样,我创建了一个名为Includes的新文件夹并将我的文件放在那里,然后在/app/start/global.php中添加了这一行:
require app_path().'/includes/vendor/autoload.php';
Run Code Online (Sandbox Code Playgroud)
现在正在努力:D