Saya mencoba membuat paket Hello world dengan komposer dari tutorial ini
http://grossi.io/2013/creating-your-first-composer-packagist-package/
Entah bagaimana saya telah berhasil membuatnya dan mengujinya setengah hari yang lalu, tetapi sekarang di direktori yang berbeda saya telah mencoba lagi beberapa kali - tidak dapat membuatnya berfungsi dan tidak mengerti mengapa saya mendapatkan kesalahan yang akan saya tunjukkan nanti.
Inilah yang saya lakukan:
Di direktori HelloWorld saya membuat direktori src. Di direktori src saya meletakkan file SayHello.php
namespace HelloWorld;
class SayHello
{
public static function world()
{
return 'Hello World, Composer!';
}
}
Berlari
composer init
Setelah membuat file composer.json, saya edit dan pada akhirnya seperti ini:
{
"name": "vagrant/hello-world",
"description": "test",
"license": "no",
"authors": [
{
"name": "darius",
"email": "[email protected]"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
}
Lalu aku lari
composer install
Saya mendapatkan keluaran:
Loading composer repositories with package information
Installing dependencies (including require-dev)
Nothing to install or update
Generating autoload files
Tutorial mengatakan
Komposer yang diinstal membuat direktori "tes" di dalam direktori root Anda.
Tapi saya tidak melihat direktori tersebut, jadi saya membuatnya sendiri di direktori HelloWorld. Mungkin penulis ketinggalan menambahkan sesuatu.
Lalu saya membuat file test.php
require_once __DIR__ . '/../vendor/autoload.php'; // Autoload files using Composer autoload
use HelloWorld\SayHello;
echo SayHello::world();
Berlari:
php tests/test.php
Dan dapatkan:
Kesalahan Fatal PHP: Kelas 'HelloWorld\SayHello' tidak ditemukan di /home/vagrant/package_dev/workbench/oitlabs/HelloWorld/tests/test.php on line 7
Bagaimana sekarang dia bisa melihatnya? Saya mencoba menambahkan ke test.php
require_once __DIR__ . '/../src/SayHello.php';
kemudian ia melihat dan berfungsi, jadi itu berarti ia harus melihat file tersebut. Jadi sepertinya komposer menghasilkan file autoload yang salah atau semacamnya. Bagaimana saya bisa men-debug ini?
Juga mencoba langkah yang sama di direktori lain dekat direktori yang pertama kali saya berhasil, hanya menggunakan namespace Halo. Kesalahan yang sama.
Ini juga filenya - tampilan paket saya, apa yang dihasilkan oleh komposer: http://www58.zippyshare.com/v/Hsfg4pVf/file.html