本文目录导读:

我来为你详细介绍PHP项目生成器的几种实现方式和工具:
使用Composer创建项目
创建标准PHP项目
# 创建新项目 composer create-project php/php-src my-project # 使用框架模板 composer create-project laravel/laravel my-blog composer create-project symfony/skeleton my-app composer create-project codeigniter4/appstarter my-ci4-app
自定义Composer模板
// composer.json
{
"name": "mycompany/php-project-template",
"description": "PHP项目模板",
"type": "project",
"require": {
"php": ">=8.0",
"monolog/monolog": "^2.0"
},
"scripts": {
"post-create-project-cmd": [
"MyCompany\\Installer::postCreate"
]
}
}
使用CLI工具生成项目
Symfoly (自定义CLI生成器)
#!/usr/bin/env php
<?php
// project-generator.php
class ProjectGenerator {
private $projectName;
private $structure = [
'app/Controllers',
'app/Models',
'app/Views',
'config',
'public/assets/css',
'public/assets/js',
'public/assets/images',
'database/migrations',
'database/seeds',
'routes',
'tests',
'storage/logs',
'storage/cache',
];
public function generate($name) {
$this->projectName = $name;
echo "生成项目: {$name}\n";
$this->createDirectoryStructure();
$this->createBaseFiles();
$this->configureAutoload();
$this->runComposerInstall();
echo "项目生成完成!\n";
}
private function createDirectoryStructure() {
foreach ($this->structure as $dir) {
$path = $this->projectName . '/' . $dir;
if (!is_dir($path)) {
mkdir($path, 0755, true);
echo "创建目录: {$path}\n";
}
}
}
private function createBaseFiles() {
// index.php
file_put_contents(
"{$this->projectName}/public/index.php",
$this->getIndexTemplate()
);
// .htaccess
file_put_contents(
"{$this->projectName}/public/.htaccess",
$this->getHtaccessTemplate()
);
// 配置文件
file_put_contents(
"{$this->projectName}/config/config.php",
$this->getConfigTemplate()
);
echo "创建基础文件完成\n";
}
private function getIndexTemplate() {
return <<<PHP
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use App\\Core\\Application;
// 加载配置
\$config = require __DIR__ . '/../config/config.php';
// 启动应用
\$app = new Application(\$config);
\$app->run();
PHP;
}
private function getConfigTemplate() {
return <<<PHP
<?php
return [
'app' => [
'name' => '{$this->projectName}',
'debug' => true,
'env' => 'development',
],
'database' => [
'host' => 'localhost',
'name' => 'dbname',
'user' => 'root',
'pass' => '',
],
'routes' => [
'default_controller' => 'Home',
'default_method' => 'index',
],
];
PHP;
}
private function configureAutoload() {
// 创建composer.json
$composerJson = [
'name' => "local/{$this->projectName}",
'description' => "{$this->projectName} 项目",
'autoload' => [
'psr-4' => [
'App\\' => 'app/',
'Config\\' => 'config/',
]
],
'require' => [
'php' => '>=7.4',
]
];
file_put_contents(
"{$this->projectName}/composer.json",
json_encode($composerJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)
);
echo "配置自动加载完成\n";
}
private function runComposerInstall() {
chdir($this->projectName);
passthru('composer dump-autoload');
}
}
// 命令行入口
if (PHP_SAPI === 'cli') {
if ($argc < 2) {
echo "用法: php project-generator.php <项目名称>\n";
exit(1);
}
$generator = new ProjectGenerator();
$generator->generate($argv[1]);
}
使用现成脚手架工具
Laravel Artisan
# 创建完整Laravel项目 composer create-project laravel/laravel my-app # 创建控制器 php artisan make:controller UserController # 创建模型 php artisan make:model User -m # 创建中间件 php artisan make:middleware AuthMiddleware
Symfony CLI
# 创建Symfony项目 symfony new my_project # 创建Web应用 symfony new --full my_app # 创建API项目 symfony new api_project --api
专业代码生成器
自定义脚手架系统
<?php
// scaffold.php
class PHPProjectScaffold {
private $config = [];
public function __construct($config = []) {
$this->config = array_merge([
'name' => 'default-project',
'version' => '1.0.0',
'framework' => 'custom',
'database' => 'mysql',
'features' => ['auth', 'api', 'admin']
], $config);
}
public function generate() {
$this->validateConfig();
$this->createStructure();
$this->generateCode();
$this->setupEnvironment();
}
private function createStructure() {
// 创建目录结构
$dirs = [
'src/Core',
'src/Http/Controllers',
'src/Http/Middleware',
'src/Models',
'src/Services',
'src/Repositories',
'resources/views',
'resources/lang',
'database/factories',
'routes',
'public'
];
foreach ($dirs as $dir) {
$path = $this->config['name'] . '/' . $dir;
if (!file_exists($path)) {
mkdir($path, 0755, true);
}
}
}
private function generateCode() {
foreach ($this->config['features'] as $feature) {
switch ($feature) {
case 'auth':
$this->generateAuth();
break;
case 'api':
$this->generateAPI();
break;
case 'admin':
$this->generateCRUD();
break;
}
}
}
private function generateAuth() {
$authPath = $this->config['name'] . '/src/Http/Middleware/AuthMiddleware.php';
$authCode = <<<PHP
<?php
namespace App\Http\Middleware;
class AuthMiddleware {
public function handle(\$request, \$next) {
if (!isset(\$_SESSION['user'])) {
header('Location: /login');
exit;
}
return \$next(\$request);
}
}
PHP;
file_put_contents($authPath, $authCode);
}
private function generateCRUD() {
$crudPath = $this->config['name'] . '/src/Controllers/AdminController.php';
$crudCode = <<<PHP
<?php
namespace App\Controllers;
class AdminController {
public function index() {
echo "Admin Dashboard";
}
public function create() {
echo "Create New Record";
}
public function edit(\$id) {
echo "Edit Record: " . \$id;
}
public function delete(\$id) {
echo "Delete Record: " . \$id;
}
}
PHP;
file_put_contents($crudPath, $crudCode);
}
private function setupEnvironment() {
$envContent = "# Environment Configuration
APP_NAME=" . $this->config['name'] . "
APP_VERSION=" . $this->config['version'] . "
APP_DEBUG=true
DB_CONNECTION=" . $this->config['database'] . "
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=" . $this->config['name'] . "
DB_USERNAME=root
DB_PASSWORD=";
file_put_contents(
$this->config['name'] . '/.env',
$envContent
);
}
}
// 使用示例
$scaffold = new PHPProjectScaffold([
'name' => 'blog-system',
'version' => '2.0.0',
'database' => 'pgsql',
'features' => ['auth', 'api']
]);
$scaffold->generate();
使用在线生成工具
常用在线工具
- PHPStorm - 内置项目生成器
- Laravel Generator - 在线生成Laravel项目
- Figma to PHP - 设计转代码
- phpStarter - 快速生成骨架
Docker化项目生成
# Dockerfile
FROM php:8.2-fpm
# 安装依赖
RUN apt-get update && apt-get install -y \
git \
unzip \
libpq-dev \
&& docker-php-ext-install pdo_mysql pdo_pgsql
# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 工作目录
WORKDIR /var/www/html
# 项目文件
COPY . .
# 生成项目
RUN composer install \
&& php artisan key:generate
最佳实践建议
- 使用Composer - 管理依赖和自动加载
- 版本控制 - 初始化Git仓库
- 环境配置 - 使用.env文件配置环境
- 代码规范 - 遵循PSR标准
- 测试集成 - 配置PHPUnit测试环境
示例:快速生成完整项目
#!/bin/bash # quick-project.sh # 创建PHP项目 php project-generator.php my-app # 或使用Laravel composer create-project laravel/laravel my-app # 初始化Git cd my-app git init git add . git commit -m "Initial commit" # 启动开发服务器 php -S localhost:8000 -t public
根据你的需求选择合适的方法,从简单的Composer模板到复杂的自定义生成器都有不同的适用场景。