\n"; echo "请输入你的插件编号,字母数字和下划线组合。\n"; echo "例如:{$argv[0]} plugin_demo\n"; echo "\n"; exit; } $pluginKey = trim($argv[1]); if (!preg_match('/^[0-9A-Za-z_]{1,}$/', $pluginKey)) { echo "插件编号格式不对,应该使用字母数字和下划线组合。\n"; echo "\n"; exit; } $pluginKeyClass = ucfirst(str_replace('_', '', $pluginKey)); // 生成插件json配置文件 echo "开始生成插件json配置文件……\n"; $jsonFile = dirname(__FILE__) . '/../plugins/' . $pluginKey . '.json'; $jsonConfig = array( 'plugin_key' => $pluginKey, 'plugin_name' => $pluginKey . '插件', 'plugin_author' => '作者名称', 'plugin_desc' => '插件描述', 'plugin_version' => '1.0', 'plugin_encrypt' => 0, // 加密模式,0无加密,1有加密,2半加密 'plugin_depends' => array( 'PHP' => '5.6', 'MySQL' => '5.3', 'PhalApi' => PHALAPI_VERSION, // composer 依赖的包,无则不写 'composer' => array( // 参考示例,格式是包名 => 版本号 'phalapi/kernal' => '>=2.12.2', ), 'extension' => array( // PHP扩展名 // 'pdo_mysql', ), ), // 插件的文件 'plugin_files' => array( // 配置文件 'config' => 'config/' . $pluginKey . '.php', // 插件启动文件 'plugins' => 'plugins/' . $pluginKey . '.php', // 数据库变更文件 'data' => 'data/' . $pluginKey . '.sql', // portal后台及对外访问的文件 'public' => array( 'public/portal/page/' . $pluginKey, 'public/portal/page/' . $pluginKey, ), // PHP源代码 'src' => array( 'src/app/Api/' . $pluginKeyClass, 'src/app/Domain/' . $pluginKeyClass, 'src/app/Model/' . $pluginKeyClass, 'src/app/Common/' . $pluginKeyClass, 'src/portal/Api/' . $pluginKeyClass, ), ), ); if (file_exists($jsonFile)) { echo "插件已存在!" . $jsonFile . "\n"; echo "\n"; exit; } file_put_contents($jsonFile, json_encode($jsonConfig, version_compare(PHP_VERSION, '5.4.0', '>=') ? JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT : JSON_PRETTY_PRINT)); echo realpath($jsonFile), " json配置文件生成 ok \n\n"; // 开始创建插件文件和目录 echo "开始创建插件文件和目录……\n"; // config配置 $file = API_ROOT . '/' . $jsonConfig['plugin_files']['config']; echo $file, "... \n"; file_put_contents($file, "notorm->demo->executeSql($sql); } echo "{$pluginKey}插件菜单添加 ok \n\n"; echo "恭喜,插件创建成功,可以开始开发啦!\n";