Pop\Project\Install::install PHP Метод

install() публичный статический Метод

Install the project based on the available config files
public static install ( string $installFile ) : void
$installFile string
Результат void
    public static function install($installFile)
    {
        // Display instructions to continue
        $dbTables = array();
        self::instructions();
        $input = self::cliInput();
        if ($input == 'n') {
            echo I18n::factory()->__('Aborted.') . PHP_EOL . PHP_EOL;
            exit(0);
        }
        // Get the install config.
        $installDir = realpath(dirname($installFile));
        $install = (include $installFile);
        // Check if a project folder already exists.
        if (file_exists($install->project->name)) {
            echo wordwrap(I18n::factory()->__('Project folder exists. This may overwrite any project files you may already have under that project folder.'), 70, PHP_EOL) . PHP_EOL;
            $input = self::cliInput();
        } else {
            $input = 'y';
        }
        // If 'No', abort
        if ($input == 'n') {
            echo I18n::factory()->__('Aborted.') . PHP_EOL . PHP_EOL;
            exit(0);
            // Else, continue
        } else {
            $db = false;
            $databases = array();
            // Test for a database creds and schema, and ask
            // to test and install the database.
            if (isset($install->databases)) {
                $databases = $install->databases->asArray();
                echo I18n::factory()->__('Database credentials and schema detected.') . PHP_EOL;
                $input = self::cliInput(I18n::factory()->__('Test and install the database(s)?') . ' (Y/N) ');
                $db = $input == 'n' ? false : true;
            }
            // Handle any databases
            if ($db) {
                // Get current error reporting setting and set
                // error reporting to E_ERROR to suppress warnings
                $oldError = ini_get('error_reporting');
                error_reporting(E_ERROR);
                // Test the databases
                echo I18n::factory()->__('Testing the database(s)...') . PHP_EOL;
                foreach ($databases as $dbname => $db) {
                    echo I18n::factory()->__('Testing') . ' \'' . $dbname . '\'...' . PHP_EOL;
                    if (!isset($db['type']) || !isset($db['database'])) {
                        echo I18n::factory()->__('The database type and database name must be set for the database ') . '\'' . $dbname . '\'.' . PHP_EOL . PHP_EOL;
                        exit(0);
                    }
                    $check = Install\Dbs::check($db);
                    if (null !== $check) {
                        echo $check . PHP_EOL . PHP_EOL;
                        exit(0);
                    } else {
                        echo I18n::factory()->__('Database') . ' \'' . $dbname . '\' passed.' . PHP_EOL;
                        echo I18n::factory()->__('Installing database') . ' \'' . $dbname . '\'...' . PHP_EOL;
                        $tables = Install\Dbs::install($dbname, $db, $installDir, $install);
                        if (count($tables) > 0) {
                            $dbTables = array_merge($dbTables, $tables);
                        }
                    }
                }
                // Return error reporting to its original state
                error_reporting($oldError);
            }
            // Install base folder and file structure
            Install\Base::install($install);
            // Install project files
            Install\Projects::install($install, $installDir);
            // Install table class files
            if (count($dbTables) > 0) {
                Install\Tables::install($install, $dbTables);
            }
            // Install controller class files
            if (isset($install->controllers)) {
                Install\Controllers::install($install, $installDir);
            }
            // Install form class files
            if (isset($install->forms)) {
                Install\Forms::install($install);
            }
            // Install model class files
            if (isset($install->models)) {
                Install\Models::install($install);
            }
            // Create 'bootstrap.php' file
            Install\Bootstrap::install($install);
            echo I18n::factory()->__('Project install complete.') . PHP_EOL . PHP_EOL;
        }
    }

Usage Example

Пример #1
0
                            }
                            // Else, install project
                        } else {
                            if ($argv[1] == '-i' || $argv[1] == '--install') {
                                // Check if the project install file argument was passed
                                if (empty($argv[2])) {
                                    echo Install::cliError(4);
                                    // Else, run the install process
                                } else {
                                    echo 'Installing Project' . PHP_EOL;
                                    echo '------------------' . PHP_EOL;
                                    if (!file_exists($argv[2])) {
                                        echo 'The project install file \'' . $argv[2] . '\' does not exist.' . PHP_EOL . PHP_EOL;
                                        exit(0);
                                    }
                                    Install::install($argv[2]);
                                }
                                // Else, unknown option passed
                            } else {
                                echo Install::cliError(5, $argv[1]);
                            }
                        }
                    }
                }
            }
        }
    }
    // Else, no option passed
} else {
    echo Install::cliError(6);
}