Php ile komut satırından dosya oluşturmak
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...
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (0)
Henüz kimse cevap yazmadı. İlk cevap yazan sen ol!