soncizgi
Aktif Üye
- Mesajlar
- 163
Laravel framework’unu kullanan arkadaşlar bilirler. Laravel’de artisan ile komut satırında otomatik dosya oluşturma yöntemi var.
Bende kendime göre böyle bir işlemi yapan kodu oluşturdum. Komut satırında
yazıldığında controllers dizini içinde otomatik olarak controller dosyasını oluşturur.
Benim çok işime yaradı. Belki başka arkadaşlarında işine yarar diye kodu paylaşıyorum.
sizde kodu kendinize göre güncelleyebilirsiniz. Kolay gelsin.
Bende kendime göre böyle bir işlemi yapan kodu oluşturdum. Komut satırında
Kod:
php cli.php --c=kitap
Benim çok işime yaradı. Belki başka arkadaşlarında işine yarar diye kodu paylaşıyorum.
PHP:
<?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";
}