PHP Classes

File: phptricksORM/Command/Make.php

Recommend this page to a friend!
  Classes of mohammad anzawi   PHP PDO database class   phptricksORM/Command/Make.php   Download  
File: phptricksORM/Command/Make.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP PDO database class
Access databases using PDO
Author: By
Last change:
Date: 3 years ago
Size: 2,756 bytes
 

Contents

Class file image Download
<?php
/**
 * *
 * * please don't remove this comment block
 * *
 * * @author phptricks Team - Mohammad Anzawi
 * * @author_uri https://phptricks.org
 * * @uri https://github.com/anzawi/php-database-class
 * * @version 5.0.0
 * * @licence MIT -> https://opensource.org/licenses/MIT
 * * @package PHPtricks\Orm
 *
 */

namespace PHPtricks\Orm\Command;


use
Symfony\Component\Console\Command\Command;
use
Symfony\Component\Console\Input\InputArgument;
use
Symfony\Component\Console\Input\InputInterface;
use
Symfony\Component\Console\Input\InputOption;
use
Symfony\Component\Console\Output\OutputInterface;

class
Make extends Command
{

    protected function
configure()
    {
       
$this
           
->setName('migrate:make')
            ->
setDescription('Generate Migration Class (file)')
            ->
addArgument('class', InputArgument::REQUIRED,
               
'Class Name | File Name')
            ->
addArgument('type', InputArgument::REQUIRED,
               
'choose class type [create, alter, drop].')
            ->
addOption('table', 't', InputOption::VALUE_OPTIONAL, 'table name',
               
'change_this_to_table_name');
    }

    protected function
execute(InputInterface $input, OutputInterface $output)
    {
       
$name = $input->getArgument('class');
       
$action = strtolower($input->getArgument('type'));
       
$table = str_replace('=', '', $input->getOption('table'));

        switch (
$action) {
            case
'create':
               
$this->generate('create', $name, $table);
                break;
            case
'alter':
               
$this->generate('alter', $name, $table);
                break;
            case
'drop':
               
$this->generate('drop', $name, $table);
                break;

            default:
               
$output->writeln("<error>[{$action}] is not command!, its must be one of (create, alter, drop).</error>");

                return
Command::FAILURE;
        }

       
$output->writeln("<info>Migration Created Successfully</info>");
       
$output->writeln("===========");
       
$output->writeln("");

        return
Command::SUCCESS;
    }

   
/**
     * @param string $name
     *
     * @return int
     */
   
private function generate(string $type, string $name, string $table)
    {
       
$path = rtrim(config("directories.{$type}"), '/');
       
$path = $path."/$name.php";
        @
mkdir(dirname($path), 0755, true);
       
$tempContent = file_get_contents(__DIR__."/Templates/{$type}.template");
       
$tempContent = str_replace('{%CLASS_NAME%}', $name, $tempContent);
       
$tempContent = str_replace('{%TABLE_NAME%}', $table, $tempContent);
       
file_put_contents($path, $tempContent);

        return
Command::SUCCESS;
    }

}