xenokore / web-skeleton
用于构建Xeno web应用的骨架项目
Requires
- doctrine/dbal: ^2.8
- doctrine/migrations: ^3.1
- doctrine/orm: ^2.8
- php-di/php-di: ^6.3
- psr/container: ^1.0
- psr/http-message: ^1.0
- symfony/console: ^5.2
- twig/twig: ^3.3
- xenokore/app: ^0.3.0
- xenokore/logger: ^1.1
- xenokore/utility: ^1.0
Requires (Dev)
- escapestudios/symfony2-coding-standard: ^3.12
- phpunit/phpunit: ^9.5
- psy/psysh: ^0.10.8
- squizlabs/php_codesniffer: ^3.6
README
一个可以用于创建基于Xeno的web应用的骨架项目。
特性
- 完全兼容PSR的框架骨架
- 包含
- PHP-DI 作为主要容器
- Slim 用于路由
- Doctrine 作为对象关系映射器和数据库抽象层
- Twig 用于渲染
- PHPUnit 用于单元测试
- PsySH 作为REPL
- Symfony/Console 用于控制台命令
- 所有内容都是自动依赖注入的!(类、控制器、控制台命令、Twig 扩展等)
- 通过简单包含库,Xeno组件会自动添加到App中(缓存、会话等)
设置
- 导航到您想要创建新项目的父目录,并运行以下命令
composer create-project xenokore/web-skeleton <project-name>
project-name 参数将是创建的目录的名称。
-
设置一个网络服务器以在
/<project-name>/public目录中提供文件。请确保将每个未找到的文件通过index.php路由。可以在/<project-name>/docs/nginx.md中找到示例 nginx 配置。 -
启动您的网络服务器并导航到您新创建的应用程序。如果一切正常,您将看到消息:
应用程序运行正常 :^)
用法
在设置项目和网络服务器以使用框架之后,您可以通过添加类、视图、控制器和路由来开始创建应用程序。请参阅下面的 结构 部分,了解一切应该去哪里。
应用程序附带一个控制台,可以帮助您完成一些基本任务。您可以通过简单地运行: php ./console 来访问控制台。在 Unix 系统上,您可以简单地做 ./console。
一些简单的任务包括
php ./console controller:create <name>创建一个新的控制器。名称不应以 "Controller" 结尾php ./console test:create <name>创建一个新的单元测试。名称不应以 "Test" 结尾php ./console cache:clear清除所有缓存文件。这在更新后在生产中很有用。
结构
/app 包含用于结构化应用程序的文件。它包含
- 容器定义
- 主要的引导文件以及一个用于REPL的文件
- 全局中间件定义
- 路由
/cache 包含应用程序的缓存文件。示例
- 编译的容器
- 编译的路由
- 编译的Twig模板
/config 包含用于配置应用程序中不应在不同环境之间更改的部分的配置文件。
/controllers 包含控制器。
/docs 用于您的应用程序特定文档。
/i18n 是存储国际化文件的地方。
/lib 是应存储非composer库的地方。一个例子是 DataTables php 文件。
/logs 是存储日志文件的地方。
/migrations 包含 Doctrine 数据库迁移。主目录中的迁移由 Git 忽略以帮助您在开发期间。然而,/migrations/production 中的所有内容都已提交。
/public 是唯一应该由网络服务器访问的目录。每个不对应于此目录中现有文件的请求都通过 index.php 路由,该文件设置路由器。(例如,您的 favicon 将在这里。)
/src 是您应用程序代码的主要目录。这里的一切都在 \App 命名空间下,并且会自动进行依赖注入。为类添加自定义容器定义将覆盖默认的自动装配行为。
/tests 是PHPUnit测试所在的位置。这些测试在 \App\Tests 命名空间下。
/uploads 是用户上传文件将存放的位置。这些文件在Git中会被忽略。
/views 是Twig模板的主要视图目录。
待办事项
- 添加Whoops错误处理器。
- 可能将一些代码从web-skeleton移动到xenokore/app或其他组件中。
- 更多文档