2017-02-11 43 views
6

Windows üzerinde besteci kullanıyorum ve composer install veya composer update gerçekleştirdiğimde composer.json dosyasından kullandığım 2 paketimi başarıyla yüklüyorum.Composer autoload_namespaces dizisi boş, ancak paketlerimi karşıdan yüklüyor

{ 
    "require": { 
     "bcosca/fatfree": "dev-master", 
     "respect/validation": "^1.1" 
    } 
} 

benim index.php ilk satırı

require_once __DIR__ . '\vendor\autoload.php'; 

Bu hiçbir şeyi yükleniyor görünmüyordu, örneğin değil bu 2 paketlerden tanımlanan sınıflara ilişkin hatalar, çok. Ben daha ileri Konuyu inceledik ve aşağıda benim autoload_namespaces.php olduğunu keşfetti:

<?php 

// autoload_namespaces.php @generated by Composer 

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

return array(
); 

dizisi tamamen boş, bu nasıl olur nedir? Bu 2 paketin gereksinimlerini burada görmeyi bekledim ...

Yardımın için teşekkürler! F3:

{ 
    "name": "bcosca/fatfree", 
    "description": "A powerful yet easy-to-use PHP micro-framework designed to help you build dynamic and robust Web applications - fast!", 
    "homepage": "http://fatfreeframework.com/", 
    "license": "GPL-3.0", 
    "require": { 
     "php": ">=5.3.6" 
    }, 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "https://github.com/bcosca/fatfree" 
     } 
    ], 
    "autoload": { 
     "files": ["lib/base.php"] 
    } 
} 

Validator:

{ 
    "name": "respect/validation", 
    "description": "The most awesome validation engine ever created for PHP", 
    "keywords": ["respect", "validation", "validator"], 
    "type": "library", 
    "homepage": "http://respect.github.io/Validation/", 
    "license": "BSD Style", 
    "authors": [ 
     { 
      "name": "Respect/Validation Contributors", 
      "homepage": "https://github.com/Respect/Validation/graphs/contributors" 
     } 
    ], 
    "require": { 
     "php": ">=5.4", 
     "symfony/polyfill-mbstring": "^1.2" 
    }, 
    "require-dev": { 
     "egulias/email-validator": "~1.2", 
     "malkusch/bav": "~1.0", 
     "mikey179/vfsStream": "^1.5", 
     "phpunit/phpunit": "~4.0", 
     "symfony/validator": "~2.6.9", 
     "zendframework/zend-validator": "~2.3" 
    }, 
    "suggest": { 
     "ext-bcmath": "Arbitrary Precision Mathematics", 
     "ext-mbstring": "Multibyte String Functions", 
     "egulias/email-validator": "Strict (RFC compliant) email validation", 
     "malkusch/bav": "German bank account validation", 
     "symfony/validator": "Use Symfony validator through Respect\\Validation", 
     "zendframework/zend-validator": "Use Zend Framework validator through Respect\\Validation", 
     "fabpot/php-cs-fixer": "Fix PSR2 and other coding style issues" 
    }, 
    "autoload": { 
     "psr-4": { 
      "Respect\\Validation\\": "library/" 
     } 
    }, 
    "autoload-dev": { 
     "psr-4": { 
      "Respect\\Validation\\": "tests/library/" 
     } 
    }, 
    "extra": { 
     "branch-alias": { 
      "dev-master": "1.1-dev" 
     } 
    }, 
    "scripts": { 
     "test": "./vendor/bin/phpunit" 
    } 
} 

Ve Doğrulayıcısı'nı yükledikten sonra

, bu Symfony'nin bileşeni onunla birlikte gelen:

{ 
    "name": "symfony/polyfill-mbstring", 
    "type": "library", 
    "description": "Symfony polyfill for the Mbstring extension", 
    "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], 
    "homepage": "https://symfony.com", 
    "license": "MIT", 
    "authors": [ 
     { 
      "name": "Nicolas Grekas", 
      "email": "[email protected]" 
     }, 
     { 
      "name": "Symfony Community", 
      "homepage": "https://symfony.com/contributors" 
     } 
    ], 
    "require": { 
     "php": ">=5.3.3" 
    }, 
    "autoload": { 
     "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, 
     "files": [ "bootstrap.php" ] 
    }, 
    "suggest": { 
     "ext-mbstring": "For best performance" 
    }, 
    "minimum-stability": "dev", 
    "extra": { 
     "branch-alias": { 
      "dev-master": "1.3-dev" 
     } 
    } 
} 
+0

Validator paketlerinizin 'composer.json' dosyaları gösterin. Onlar için otomatik yüklemeyi nasıl yapılandırdığınızı bilmeden sadece neyin yanlış gittiğini tahmin edebiliriz. – xabbuh

+0

@xabbuh Üzgünüz, şimdi eklenmişler. – Shackrock

+1

Ne tür hatalar aldınız? 'autoload_namespaces.php' olduğu gibi boş olmalıdır, çünkü bu bağımlılıklardan hiçbiri PSR-0 otomatik yüklemesini kullanmaz. Bunun yerine "autoload_files.php" ve "autoload_psr4.php" paketleri hakkında bilgi içerir. – Joe

cevap

4

Dizi tamamen boş, nasıl oluyor? Ben

  • Besteci birden sınıf yükleme yöntemleri destekler ... Burada bu 2 paketlerin gereksinimleri görmek bekleniyor. Önemli olan, PSR4 belirtimini uygular. Symfony ve Respect, PSR4 kullanıyor. composer.json dosyalarına veya oluşturduğunuz vendor/composer/autoload_psr4.php dosyasına bakarak bunu doğrulayabilirsiniz.

  • Yağsız Çerçeve besteci AutoLoad onun lib/base.php dosyayı sağlar. Bu bilmek önemlidir çünkü base.php dahil olmak üzere iki kez PHP Fatal error: Cannot declare class Cache, because the name is already in use atar. Çözüm, Composer'in işini yapmasına ve bunun yerine $f3 = Base::instance()'u getirmesine izin vermektir.

Öneriler

  • vendor klasörü silin ve temiz bir sınıf ad eksik olmayan (ya da ithal edilmektedir) kodunuzu doğrulayın Composer

  • ile make install , Örneğin \Respect\Validation\Validator yerine

0

paketleri kendilerini composer.json ekleme

Sorun, require_once() hattınızla ilgilidir. Autoload.php'ye doğru dosya yolunu vermedi. senin 'satıcı' dizini sonra index.php ile aynı seviyede ise sadece autoloader gerektiren yapmanız gereken tüm aşağıda gösterildiği gibi:

enter image description here

<?php 
require_once 'vendor/autoload.php'; 

echo 'Loaded...'; 

Not yanlış bir şey ile kesinlikle olmadığını autoload_namespaces.php. Benimki de seninkiyle aynı.

+0

Bunun "require" ve "require_once" gibi önemli bir "E_COMPILE_ERROR" düzeyinde hata üretmesi ve bilinmeyen sınıf adlarını bildirmek yerine komut dosyasını durdurması gibi bir sorun olduğunu düşünmüyorum. – Rayne

+0

@Rayne kabul etti. Gereksinim yolu da iyi görünüyor. – Amila