Skip to content

Instantly share code, notes, and snippets.

@refo
Last active August 29, 2015 14:17
Show Gist options
  • Save refo/6935cf2d513ab63277bf to your computer and use it in GitHub Desktop.
Save refo/6935cf2d513ab63277bf to your computer and use it in GitHub Desktop.
Laravel 5'i, kendi `vendor` klasörüne bağlı kalmadan çalıştır

Dış tabaka klasör yapısı

.
|-- 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.

artisan çalışmıyor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment