v2.5.2
Giriş yap

Php ile komut satırından dosya oluşturmak

soncizgi
102 defa görüntülendi

Laravelde artisan tarzında otomatik controller, model gibi dosyaları oluşturmak için kullanabileceğimiz bir kod bloğu.
komut satırında

<?php
// cli.php

// Komut satırından gelen argümanları alalım
$options = getopt("", ["c:", "m:", "v:"]);

// Dizinlerin tanımlanması
$controllerDir = 'app/controllers/';
$modelDir = 'app/models/';
$viewDir = 'app/views/';

// Dizinlerin var olup olmadığını kontrol edip oluşturalım
if (!is_dir($controllerDir)) {
    mkdir($controllerDir, 0777, true);
}
if (!is_dir($modelDir)) {
    mkdir($modelDir, 0777, true);
}
if (!is_dir($viewDir)) {
    mkdir($viewDir, 0777, true);
}


#Controller Sınıfı Oluşturma
if (isset($options['c'])) {
    $className = ucfirst($options['c']) . '.php'; // Örn: controllers/Okul.php kontrol dosyası
    $classNameUc = ucfirst($options['c']);
    $content = <<<'EOT'
<?php
namespace App\Controllers;

class CLASS_NAME extends \Core\Controller
{
    public function main()
    {
         $this->blade->render('{home}.index');
    }

    public function flex() {
        // Örnek metod
    }
}
EOT;

    // Dosya içeriğinde sınıf adını dinamik olarak değiştirelim
    $content = str_replace('CLASS_NAME', $classNameUc, $content);
    $content = str_replace('{home}', $options['c'], $content);

    file_put_contents($controllerDir .$className, $content);
    echo "Dosya oluşturuldu: $className [controller]\n";
}

#Model Sınıfı Oluşturma
if (isset($options['m'])) {
    $className = ucfirst($options['m']) . '.php'; // Örn: models/Okul.php
    $classNameUc = ucfirst($options['m']);
    $content = <<<'EOT'
<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class CLASS_NAME extends Model {
    protected $table = '{model}';
    protected $primaryKey = '{model}_id';
    public $timestamps = false;
}
EOT;

    // Dosya içeriğinde sınıf adını dinamik olarak değiştirelim
    $content = str_replace('CLASS_NAME', $classNameUc, $content);
    $content = str_replace('{model}', $options['m'], $content);

    file_put_contents($modelDir .$className, $content);
    echo "Dosya oluşturuldu: $className [model]\n";
}

#View Oluşturma
if (isset($options['v'])) {
$input = $options['v'];
    [$folderName, $fileName] = explode('.', $input);

    // Eğer dosya adı yoksa varsayılan dosya adını kullan
    if (!$fileName) {
        $fileName = 'index'; // Örneğin varsayılan dosya adı 'index' olabilir
    }

    $viewPath = $viewDir .  $folderName; // Klasör yolu
    $viewFile = $fileName . '.blade.php'; // Dosya adı

    // HTML içerik şablonu
    $content = <<<'EOT'
<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HOME</title>
</head>
<body>
    <h1>HOME view</h1>
</body>
</html>
EOT;

    // Dinamik olarak içerikteki HOME ifadesini dosya adına göre değiştir
    $content = str_replace('HOME', ucfirst($fileName), $content);

    // Klasör yoksa oluştur
    if (!is_dir($viewPath)) {
        mkdir($viewPath, 0777, true);
        echo "Klasör oluşturuldu: $viewPath\n";
    }

    // Dosya yolu
    $filePath = $viewPath . '/' . $viewFile;
    file_put_contents($filePath, $content); // Dosyayı oluştur
    echo "Dosya oluşturuldu: $filePath\n";
}

komut satırında

php cli.php --c=kitap --m=kitap --v=kitap

yazılınca Kitap controller, kitap model ve kitap view dosyaları otomatik oluşacaktır.
Benim çok işime yaradı. Belki başka arkadaşlarında işine yarar. Kodu kendinize göre güncelleyebilirsiniz.
Kolay gelsin...

Cevap yaz
Cevaplar (0)
Henüz kimse cevap yazmadı. İlk cevap yazan sen ol!