Merhaba arkadaşlar! Bu eğitimde sizlere Laravel özelliklerini harici PHP dosyalarında nasıl kullanabileceğinizi anlatacağım. Öncelikle bu kullanımın ne işe yarayacağını açıklayayım.
Laravel, başlı başına güçlü bir kütüphane olmasına rağmen, bazı projelerde bu sistemi başka bir içerik yönetim sistemine veya küçük bir kod parçacığına entegre etmeniz gerekebilir. Örneğin, Laravel ve WordPress entegrasyonu veya Laravel ve Opencart entegrasyonu gibi birçok seçenek mevcuttur.
Bu eğitimin ana konusu, harici bir PHP kodunda Laravel özelliklerini kullanabilmektir. Örneğin, ben bu tekniği Laravel ile yazdığım SFX Laravel adlı projeme SFKS Builder adlı tasarım aracımı entegre ederken kullandım. Laravel ile yazdığınız bir sistemde, ayrı bir PHP dosyasında veya sistemde kullanıcı giriş yapıp yapmadığını kontrol edebilir ve bu teknik sayesinde işlemler gerçekleştirebilirsiniz.
Örneğimiz için localhost'umuza iki dizin oluşturalım:
laravel
integration
"laravel" dizinine Laravel'i kurun. "integration" dizinine ise bootstrap.php
adında bir dosya oluşturun ve içine şu kodları ekleyin:
<?php
use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;
if (!file_exists(__DIR__ . '/../laravel/vendor/autoload.php'))
return;
require __DIR__ . '/../laravel/vendor/autoload.php';
$app = require_once __DIR__ . '/../laravel/bootstrap/app.php';
$kernel = $app->make(Kernel::class);
$response = tap(
$kernel->handle(
$request = Request::capture()
)
);
Yukarıdaki kod, sistemi tamamen yüklemeyecek, sadece özelliklerin kullanılabilmesini sağlayacaktır. Controller ve View özelliklerini çalıştırmaz.
Eğer bütün sistemi entegre etmek istiyorsanız:
<?php
use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;
if (!file_exists(__DIR__ . '/../laravel/vendor/autoload.php'))
return;
require __DIR__ . '/../laravel/vendor/autoload.php';
$app = require_once __DIR__ . '/../laravel/bootstrap/app.php';
$kernel = $app->make(Kernel::class);
$response = tap(
$kernel->handle(
$request = Request::capture()
)->send()
);
Bütün sistemi kullanmak istiyorsanız, .htaccess
dosyasının da Laravel kurulu klasördeki ile aynı olması gerekmektedir:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>