Я делаю проект с использованием Laravel 4.2, где мне нужно включить PHP-файл (библиотеку для преобразования PDF в текст) в контроллер, а затем вернуть переменную с текстом, любую идею, как?
Это мой контроллер :
public function transform() { include ('includes/vendor/autoload.php'); }
И мой файл /app/start/global.php :
ClassLoader::addDirectories(array( app_path().'/commands', app_path().'/controllers', app_path().'/models', app_path().'/database/seeds', app_path().'/includes', ));
вClassLoader::addDirectories(array( app_path().'/commands', app_path().'/controllers', app_path().'/models', app_path().'/database/seeds', app_path().'/includes', ));
И это ошибка :
include(includes/vendor/autoload.php): failed to open stream: No such file or directory
Вы можете создать новый каталог где-нибудь в каталоге приложения, например, 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", }
Обязательно запустите composer dump-autoload
после изменения вашего composer.json.
Предположим, что ваше имя класса называется CustomClass.php
и оно находится в каталоге app/libraries
(поэтому полный путь – это app/libraries/CustomClass.php
). Если вы правильно разместили свой класс на своем классе, ваше соглашение, скорее всего, будет названо libraries
. Для ясности мы будем называть наше пространство имен, чтобы избежать путаницы с каталогом.
$class = new \custom\CustomClass();
Кроме того, вы можете присвоить ему псевдоним в файле 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', ... )
И вы можете создать экземпляр класса из любого места приложения, как и с любым другим классом:
$class = new CustomClass();
Надеюсь это поможет!
Я думаю, что вы правы, но я нахожу другой способ, может быть, не правильный путь, но он работает.
Так вот, я создал новую папку под названием Includes и поместил туда мои файлы, затем в /app/start/global.php я добавил эту строку:
require app_path().'/includes/vendor/autoload.php';
И теперь работает: D