本文目录导读:

- 什么是 PHP Skeleton
- 常见 Skeleton 类型
- 使用 Composer 创建 Skeleton
- 创建自己的 Skeleton 包
- Usage
- Testing
- 配置 .gitignore
- 添加 PHPStan 配置
- 添加 PHPUnit 配置
- Docker 配置(可选)
- 完成项目的辅助脚本
我来详细讲解 PHP Skeleton(项目骨架)的创建和使用方法:
什么是 PHP Skeleton
PHP Skeleton 是一个项目模板,包含了项目的标准目录结构、基础配置和常用组件,帮助快速启动新项目。
常见 Skeleton 类型
Composer 项目骨架(最常用)
# 创建标准 PHP 项目 composer create-project symfony/skeleton my-project # 或 composer create-project laravel/laravel my-project # 或 composer create-project slim/slim-skeleton my-app
自定义 Skeleton 结构
my-project/ ├── app/ │ ├── Controllers/ │ ├── Models/ │ └── Views/ ├── config/ ├── database/ │ └── migrations/ ├── public/ │ └── index.php ├── src/ ├── tests/ ├── vendor/ ├── .env.example ├── .gitignore ├── composer.json ├── README.md └── phpunit.xml
使用 Composer 创建 Skeleton
创建基础 PHP Skeleton
# 创建目录 mkdir my-php-project cd my-php-project # 初始化 composer composer init
标准 composer.json 配置
{
"name": "yourname/my-project",
"description": "A PHP project skeleton",
"type": "project",
"require": {
"php": "^8.0",
"symfony/console": "^6.0",
"symfony/dotenv": "^6.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"phpstan/phpstan": "^1.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"test": "phpunit",
"analyse": "phpstan analyse src"
},
"minimum-stability": "stable",
"prefer-stable": true
}
创建自己的 Skeleton 包
示例:创建自定义 Skeleton
// skeleton/init.php
<?php
class ProjectSkeleton
{
private string $projectName;
private string $projectPath;
public function __construct(string $name, string $path)
{
$this->projectName = $name;
$this->projectPath = rtrim($path, '/') . '/' . $name;
}
public function create(): void
{
$this->createDirectoryStructure();
$this->createComposerFile();
$this->createCoreFiles();
$this->createReadme();
}
private function createDirectoryStructure(): void
{
$dirs = [
'app/Controllers',
'app/Models',
'app/Views',
'config',
'database/migrations',
'public',
'src',
'tests',
'vendor'
];
foreach ($dirs as $dir) {
$path = $this->projectPath . '/' . $dir;
if (!is_dir($path)) {
mkdir($path, 0755, true);
}
}
}
private function createComposerFile(): void
{
$composer = <<<JSON
{
"name": "{$this->projectName}",
"type": "project",
"require": {
"php": "^8.0"
},
"autoload": {
"psr-4": {
"App\\\\": "src/"
}
}
}
JSON;
file_put_contents($this->projectPath . '/composer.json', $composer);
}
private function createCoreFiles(): void
{
// 创建入口文件
$index = <<<PHP
<?php
require __DIR__ . '/../vendor/autoload.php';
echo "Hello from {$this->projectName}!";
PHP;
file_put_contents($this->projectPath . '/public/index.php', $index);
// 创建配置文件
file_put_contents(
$this->projectPath . '/config/config.php',
"<?php\nreturn [\n 'app_name' => '{$this->projectName}'\n];\n"
);
// 创建环境文件
file_put_contents(
$this->projectPath . '/.env.example',
"APP_NAME={$this->projectName}\nAPP_ENV=local\nAPP_DEBUG=true\n"
);
}
private function createReadme(): void
{
$readme = <<<MD
# {$this->projectName}
## Installation
```bash
composer install
Usage
php -S localhost:8000 -t public
Testing
composer test
MD;
file_put_contents($this->projectPath . '/README.md', $readme);
}
// 使用示例 $skeleton = new ProjectSkeleton('my-first-project', './projects'); $skeleton->create(); echo "Project skeleton created successfully!\n";
## 5. 使用 Symfony Skeleton
### 安装 Symfony Skeleton
```bash
# 创建 Symfony 项目
composer create-project symfony/skeleton my-symfony-app
# 启动开发服务器
cd my-symfony-app
php bin/console server:run
Symfony 常用命令
# 查看所有命令 php bin/console list # 创建控制器 php bin/console make:controller HomeController # 创建实体 php bin/console make:entity Product # 创建迁移 php bin/console make:migration # 创建表单 php bin/console make:form ProductType
配置 .gitignore
# Dependencies /vendor/ # Environment .env .env.local .env.*.local # Logs var/log/*.log # Cache var/cache/* !.gitkeep # Builds /build/ # IDE .idea/ .vscode/ *.swp # OS .DS_Store Thumbs.db
添加 PHPStan 配置
<!-- phpstan.neon -->
parameters:
level: 6
paths:
- src
tmpDir: var/phpstan
bootstrapFiles:
- vendor/autoload.php
excludes_analyse:
- src/Migrations/*
添加 PHPUnit 配置
<!-- phpunit.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true">
<testsuites>
<testsuite name="Project Test Suite">
<directory>tests</directory>
</testsuite>
</testsuites>
<php>
<env name="APP_ENV" value="testing"/>
</php>
</phpunit>
Docker 配置(可选)
# Dockerfile
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y \
git \
unzip \
libpq-dev
RUN docker-php-ext-install pdo_mysql
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
EXPOSE 9000
CMD ["php-fpm"]
完成项目的辅助脚本
// setup.php
<?php
// 自动安装依赖
echo "Installing dependencies...\n";
passthru('composer install');
// 创建 .env 文件
if (!file_exists('.env')) {
copy('.env.example', '.env');
echo "Created .env file\n";
}
// 初始化 Git
if (!is_dir('.git')) {
passthru('git init');
echo "Initialized Git repository\n";
}
// 生成数据库
if (file_exists('bin/console')) {
passthru('php bin/console doctrine:database:create');
passthru('php bin/console make:migration');
passthru('php bin/console doctrine:migrations:migrate');
}
echo "Project setup completed!\n";
-
单行命令创建:
composer create-project yourname/your-skeleton project-name
-
或手动创建:
mkdir my-project && cd my-project composer init # 添加依赖、配置 autoload 等
-
安装依赖:
composer install
-
创建 .env 配置:
cp .env.example .env
-
启动开发服务器:
php -S localhost:8000 -t public
-
运行测试:
php vendor/bin/phpunit
这样你就有了一个完整的、可复用的 PHP 项目骨架,可以快速开始新项目开发。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播