2015-05-31 1 views
0

Я использую композитор для добавления внешних библиотек в свой проект, включая Predis.Predis Autoloader не загружается

По какой-то причине Predis не генерируется, вероятно, и я всегда получаю:

Class 'Predis\Autoloader' not found 

Так я нырнул в файлы загрузки композитор и найти какие-то странные вещи следующим образом:

Это мой композитор. JSON:

{ 
    "require": { 
     "facebook/php-sdk": "@stable", 
     "everyman/neo4jphp": "dev-master", 
     "predis/predis": "1.1.*@dev", 
     "aws/aws-sdk-php": "2.*" 
    }, 

    "autoload": { 
     "psr-0": { 
      "PicoCore\\": "", 
      "PicoCore\\Authentication\\" : "PicoCore/authentication", 
      "PicoCore\\Aws\\" : "PicoCore/aws", 
      "PicoCore\\Cache\\" : "PicoCore/cache", 
      "PicoCore\\Database\\" : "PicoCore/database", 
      "PicoCore\\Facebook\\" : "PicoCore/facebook", 
      "PicoCore\\Objects\\" : "PicoCore/objects", 
      "PicoCore\\Rest\\" : "PicoCore/rest", 
      "PicoCore\\Configuration\\" : "PicoCore/configuration", 
      "PicoCore\\Configuration\\Api\\" : "PicoCore/configuration/api", 
      "PicoCore\\Scripts\\" : "PicoCore/scripts", 
      "PicoCore\\Times" : "PicoCore/times" 
     } 
    } 
} 

Теперь я хотел бы видеть, как генерируется пространство имен для Predis выглядит так что я проверил autoload_par4.php внутри папки композитора и й это то, как он выглядит:

<?php 

// autoload_psr4.php @generated by Composer 

$vendorDir = dirname(dirname(__FILE__)); 
$baseDir = dirname($vendorDir); 

return array(
    'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), 
    'Predis\\' => array($vendorDir . '/predis/predis/PicoCore'), 
); 

Теперь, если вы заметите, вы увидите, что путь имен Predis является /predis/predis/PicoCore

(PicoCore мое пространство имен приложения), когда оно должно быть

/predis/predis/src

Когда я manunally изменить его - он отлично работает, но проблема в том, что всякий раз, когда я обновляю композитор, он делает это снова ..

Любые идеи, почему и где он берет путь и почему он добавляет мое название проекта?

Кстати, я посмотрел на composer.json из predis и изменить его, и теперь он выглядит как следует:

{ 
    "name": "predis/predis", 
    "type": "library", 
    "description": "Flexible and feature-complete PHP client library for Redis", 
    "keywords": ["nosql", "redis", "predis"], 
    "homepage": "http://github.com/nrk/predis", 
    "license": "MIT", 
    "support": { 
     "issues": "https://github.com/nrk/predis/issues" 
    }, 
    "authors": [ 
     { 
      "name": "Daniele Alessandri", 
      "email": "[email protected]", 
      "homepage": "http://clorophilla.net" 
     } 
    ], 
    "require": { 
     "php": ">=5.3.9" 
    }, 
    "require-dev": { 
     "phpunit/phpunit": "~4.0" 
    }, 
    "suggest": { 
     "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol", 
     "ext-curl": "Allows access to Webdis when paired with phpiredis" 
    }, 
    "autoload": { 
     "psr-4": {"Predis\\": "src/"} 
    }, 
    "extra": { 
     "branch-alias": { 
      "dev-master": "1.1-dev" 
     } 
    } 
} 
+0

Я не добавлял Symphony, это, вероятно, зависимость Predis ... если да, то какая оболочка я там проверяю? –

ответ

0

Проблема заключалась в том, что я добавил зависимость:

«predis/predis ": "1.1.*@dev"

В то время как мне нужно было:

"predis/predis": "1.0.1"