refactor(compiler): 重构编译器主逻辑到独立函数

- 将编译器核心逻辑从 compiler.php 移至 src/compiler-build.php
- 添加 main 函数封装编译流程
- 优化 ROOT_PATH 定义检查避免重复定义
- 使用 require_once 替代 require 避免重复加载
- 保留命令行参数解析和执行功能
pull/1/head
韩天峰 3 months ago
parent 593cd523d5
commit bcc518406f
  1. 18
      bin/compiler.php
  2. 22
      src/compiler-build.php

@ -3,20 +3,6 @@
require __DIR__ . '/bootstrap.php';
require __DIR__ . '/../src/polyfills.php';
require __DIR__ . '/../src/gen_stub.php';
require __DIR__ . '/../src/compiler-build.php';
use PhpAot\Php\Translator;
$translator = new Translator(ROOT_PATH);
$translator->setIndent(' ');
// 扫描所有 PHP 文件,预处理
$files = $translator->prepare($translator->parseArgv($argv));
// 生成 C++ 文件
$sourceFiles = $translator->convert($files);
// 编译所有 C++ 文件
$objectFiles = $translator->compile($sourceFiles);
// 连接所有目标文件,生成可执行文件
$binaryFile = $translator->build($objectFiles);
// 如果指定了 --run / -r,编译完成后立即执行
if ($translator->isRunRequested()) {
$translator->run($binaryFile); // never returns
}
main($argc, $argv);

@ -3,27 +3,25 @@ use PhpAot\Php\Translator;
function main(int $argc, array $argv): void
{
define("ROOT_PATH", getcwd());
define('DEBUG', true);
require ROOT_PATH . '/vendor/autoload.php';
if (!defined('ROOT_PATH')) {
define("ROOT_PATH", getcwd());
}
require_once ROOT_PATH . '/vendor/autoload.php';
global $translator;
$translator = new Translator(ROOT_PATH);
if (empty($argv[1])) {
$translator->showUsage();
exit(0);
}
$translator->setIndent(' ');
// 扫描所有 PHP 文件,预处理
$path = $argv[1];
$files = $translator->prepare($path);
$files = $translator->prepare($translator->parseArgv($argv));
// 生成 C++ 文件
$sourceFiles = $translator->convert($files);
// 编译所有 C++ 文件
$objectFiles = $translator->compile($sourceFiles);
// 连接所有目标文件,生成可执行文件
$translator->build($objectFiles);
$binaryFile = $translator->build($objectFiles);
// 如果指定了 --run / -r,编译完成后立即执行
if ($translator->isRunRequested()) {
$translator->run($binaryFile); // never returns
}
}

Loading…
Cancel
Save