| | <?php |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | namespace think; |
| |
|
| | class Build |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public static function run(array $build = [], $namespace = 'app', $suffix = false) |
| | { |
| | |
| | $lock = APP_PATH . 'build.lock'; |
| |
|
| | |
| | if (!is_writable($lock)) { |
| | if (!touch($lock)) { |
| | throw new Exception( |
| | '应用目录[' . APP_PATH . ']不可写,目录无法自动生成!<BR>请手动生成项目目录~', |
| | 10006 |
| | ); |
| | } |
| |
|
| | foreach ($build as $module => $list) { |
| | if ('__dir__' == $module) { |
| | |
| | self::buildDir($list); |
| | } elseif ('__file__' == $module) { |
| | |
| | self::buildFile($list); |
| | } else { |
| | |
| | self::module($module, $list, $namespace, $suffix); |
| | } |
| | } |
| |
|
| | |
| | unlink($lock); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | protected static function buildDir($list) |
| | { |
| | foreach ($list as $dir) { |
| | |
| | !is_dir(APP_PATH . $dir) && mkdir(APP_PATH . $dir, 0755, true); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | protected static function buildFile($list) |
| | { |
| | foreach ($list as $file) { |
| | |
| | if (!is_dir(APP_PATH . dirname($file))) { |
| | mkdir(APP_PATH . dirname($file), 0755, true); |
| | } |
| |
|
| | |
| | if (!is_file(APP_PATH . $file)) { |
| | file_put_contents( |
| | APP_PATH . $file, |
| | 'php' == pathinfo($file, PATHINFO_EXTENSION) ? "<?php\n" : '' |
| | ); |
| | } |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public static function module($module = '', $list = [], $namespace = 'app', $suffix = false) |
| | { |
| | $module = $module ?: ''; |
| |
|
| | |
| | !is_dir(APP_PATH . $module) && mkdir(APP_PATH . $module); |
| |
|
| | |
| | if (basename(RUNTIME_PATH) != $module) { |
| | self::buildCommon($module); |
| | self::buildHello($module, $namespace, $suffix); |
| | } |
| |
|
| | |
| | if (empty($list)) { |
| | $list = [ |
| | '__file__' => ['config.php', 'common.php'], |
| | '__dir__' => ['controller', 'model', 'view'], |
| | ]; |
| | } |
| |
|
| | |
| | foreach ($list as $path => $file) { |
| | $modulePath = APP_PATH . $module . DS; |
| |
|
| | if ('__dir__' == $path) { |
| | |
| | foreach ($file as $dir) { |
| | self::checkDirBuild($modulePath . $dir); |
| | } |
| | } elseif ('__file__' == $path) { |
| | |
| | foreach ($file as $name) { |
| | if (!is_file($modulePath . $name)) { |
| | file_put_contents( |
| | $modulePath . $name, |
| | 'php' == pathinfo($name, PATHINFO_EXTENSION) ? "<?php\n" : '' |
| | ); |
| | } |
| | } |
| | } else { |
| | |
| | foreach ($file as $val) { |
| | $val = trim($val); |
| | $filename = $modulePath . $path . DS . $val . ($suffix ? ucfirst($path) : '') . EXT; |
| | $space = $namespace . '\\' . ($module ? $module . '\\' : '') . $path; |
| | $class = $val . ($suffix ? ucfirst($path) : ''); |
| |
|
| | switch ($path) { |
| | case 'controller': |
| | $content = "<?php\nnamespace {$space};\n\nclass {$class}\n{\n\n}"; |
| | break; |
| | case 'model': |
| | $content = "<?php\nnamespace {$space};\n\nuse think\Model;\n\nclass {$class} extends Model\n{\n\n}"; |
| | break; |
| | case 'view': |
| | $filename = $modulePath . $path . DS . $val . '.html'; |
| | self::checkDirBuild(dirname($filename)); |
| | $content = ''; |
| | break; |
| | default: |
| | |
| | $content = "<?php\nnamespace {$space};\n\nclass {$class}\n{\n\n}"; |
| | } |
| |
|
| | if (!is_file($filename)) { |
| | file_put_contents($filename, $content); |
| | } |
| | } |
| | } |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected static function buildHello($module, $namespace, $suffix = false) |
| | { |
| | $filename = APP_PATH . ($module ? $module . DS : '') . |
| | 'controller' . DS . 'Index' . |
| | ($suffix ? 'Controller' : '') . EXT; |
| |
|
| | if (!is_file($filename)) { |
| | $module = $module ? $module . '\\' : ''; |
| | $suffix = $suffix ? 'Controller' : ''; |
| | $content = str_replace( |
| | ['{$app}', '{$module}', '{layer}', '{$suffix}'], |
| | [$namespace, $module, 'controller', $suffix], |
| | file_get_contents(THINK_PATH . 'tpl' . DS . 'default_index.tpl') |
| | ); |
| |
|
| | self::checkDirBuild(dirname($filename)); |
| | file_put_contents($filename, $content); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | protected static function buildCommon($module) |
| | { |
| | $config = CONF_PATH . ($module ? $module . DS : '') . 'config.php'; |
| |
|
| | self::checkDirBuild(dirname($config)); |
| |
|
| | if (!is_file($config)) { |
| | file_put_contents($config, "<?php\n//配置文件\nreturn [\n\n];"); |
| | } |
| |
|
| | $common = APP_PATH . ($module ? $module . DS : '') . 'common.php'; |
| | if (!is_file($common)) file_put_contents($common, "<?php\n"); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | protected static function checkDirBuild($dirname) |
| | { |
| | !is_dir($dirname) && mkdir($dirname, 0755, true); |
| | } |
| | } |
| |
|