.
|-- public
| |-- index.php // ../src/boot.php'yi çağırır
`-- src
|-- boot.php // Laravel uygulamasını boot eder
|-- composer.json
|-- composer.lock
|-- laravel // laravel/laravel repo'sundan indirilen uygulama
| |-- vendor // Laravel vendor klasörü (Oluştur)
|
`-- vendor // Composer vendor klasörü
Composer ile laravel/framework require edip, laravel/laravel repo'sunu zip'li olarak indirdikten sonra aşağıdaki düzenlemeleri yap
public/index.php
<?php
require __DIR__.'/../src/boot.php';
src/boot.php
<?php
$loader = require __DIR__.'/vendor/autoload.php';
// Laravel default namespace'ini elle ekle.
// Laravel bu işlemi composer ile yapıyor.
//
$loader->addPsr4('App\\', __DIR__.'/laravel/app');
$app = require_once __DIR__.'/laravel/bootstrap/app.php';
// Run The Application
$kernel = $app->make('Illuminate\Contracts\Http\Kernel');
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
Bu aşamada, kendi vendor klasörümüzü istediğimiz yere taşıyarak, oradan kullanabiliriz. src/boot.php dosyasının yeri sabit kalmak şartıyla, composer autloader dosyasını çalıştırmamız yeterli
$loader = require 'path/to/composer/vendor/autoload.php';
...
Böyle bir yöntemle ilerlemenin tek sebebi; laravel'i, default uygulama klasörü yapısını değiştirmeden ve aynı zamanda oluşturulacak her uygulama için tüm paylaşılan repo'ları tekrar indirmeye gerek kalmadan kullanmaktır.
Laravel repo'sundan gelen artisan, varsayılan olarak uygulama içindeki
autoloader'ı çağırıyor. İstenen klasör yapısına uygun olarak bu dosyayı oluştur.
src/laravel/vendor/autoload.php
<?php
// Make artisan work
$loader = require __DIR__.'/../../vendor/autoload.php';
$loader->addPsr4('App\\', __DIR__.'/../app');
Artık src/laravel/artisan çalışabilir.