composer Должен ли файл autoload.php быть включен в файлы классов

Мы используем этот пакет plivo: https://github.com/plivo/plivo-php и текущая версия выдает ошибку, потому что не может найти файл автозагрузки, который им требуется, вверху своего файла класса.

<?php
namespace Plivo;
require 'vendor/autoload.php';
use Guzzle\Http\Client;
class PlivoError extends \Exception {}

По моему опыту, файл автозагрузки должен быть включен только на страницу, которая на самом деле будет вызывать класс и функции.

Является ли это ошибкой с их стороны или есть какой-то способ исправить это в нашем собственном проекте, который будет сохраняться через composer updates,

2

Решение

Теперь это исправлено в моем запросе на получение этой библиотеки.

Действительно, неверно ссылаться на автозагрузку композитора в самом пакете. Composer установит глобально доступный автозагрузчик, способный загружать каждый класс, включенный в любой composer.json описание.

1

Другие решения

Поэтому я создал новый каталог, чтобы проверить это:

[~/Code/plivo/php]$ mkdir composer_testing
[~/Code/plivo/php]$ cd composer_testing/

и инициализировал новый composer.json файл без зависимостей:

[~/Code/plivo/php/composer_testing]$ composer init


Welcome to the Composer config generator



This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [charlie/composer_testing]:
Description []:
Author [Charlie Chrisman <[email protected]>]:
Minimum Stability []:
Package Type []:
License []:

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? n
Would you like to define your dev dependencies (require-dev) interactively [yes]? n

{
"name": "charlie/composer_testing",
"authors": [
{
"name": "Charlie Chrisman",
"email": "[email protected]"}
],
"require": {}
}

Do you confirm generation [yes]?

а затем требуется библиотека plivo-php (которая имеет require 'vendor/autoload.php'; линия)

[~/Code/plivo/php/composer_testing]$ composer require plivo/plivo-php
Using version ^1.0 for plivo/plivo-php
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing symfony/event-dispatcher (v2.7.6)
Loading from cache

- Installing guzzlehttp/guzzle (v3.8.1)
Loading from cache

- Installing plivo/plivo-php (v1.0.0)
Loading from cache

symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/event-dispatcher suggests installing symfony/http-kernel ()
Writing lock file
Generating autoload files
[~/Code/plivo/php/composer_testing]$

и вот обновленный файл composer.json:

{
"name": "charlie/composer_testing",
"authors": [
{
"name": "Charlie Chrisman",
"email": "[email protected]"}
],
"require": {
"plivo/plivo-php": "^1.0"}
}

а затем написал простой php-файл для генерации текста в речь XML:

<?php

require __DIR__ . '/vendor/autoload.php';

$r = new Plivo\Response();

$message = "Testing Plivo";
$params = array(
'language' => "en-US",
'voice' => 'WOMAN'
);

$r->addSpeak($message, $params);
Header('Content-type: text/xml');
echo($r->toXML());

?>

и он правильно выводит ожидаемый XML

<Response>
<Speak language="en-US" voice="WOMAN">Testing Plivo</Speak>
</Response>

Почему это работает для меня, а не для вас?

1

По вопросам рекламы [email protected]