sadegh-pm / slim-skeleton
Laravel 风格的精简骨架
Requires
- php: ^7.0
- cache/filesystem-adapter: ^1.0
- cache/namespaced-cache: ^1.0
- cache/redis-adapter: ^1.0
- hassankhan/config: ^1.0
- illuminate/database: ^5.5
- illuminate/events: ^5.5
- illuminate/pagination: ^5.5
- illuminate/translation: ^5.5
- illuminate/validation: ^5.5
- kitchenu/slim-debugbar: ^1.1
- league/flysystem: ^1.0
- mnapoli/silly: ^1.7
- monolog/monolog: ^1.23
- psy/psysh: @stable
- slim/csrf: ^0.8.2
- slim/slim: ^3.10
- slim/twig-view: ^2.4
- symfony/yaml: ^3.4
Requires (Dev)
- dopesong/slim-whoops: ^2.3
- phpunit/phpunit: ~6.5
- symfony/var-dumper: ^3.4
This package is auto-updated.
Last update: 2024-09-04 23:53:34 UTC
README
精简微框架是一个流行的简单基本PHP框架,并且具有更高的性能、更简洁、更简单和更优化的特点。另一方面,Laravel框架具有配置强大且功能丰富的特性,如模板引擎、Eloquent数据库交互、命令行、事件等,这也是非常出色的。因此,slim-skeleton在基于slim的基础上配置和构建了一些Laravel的功能和结构,骨架使用slimframework作为基础,twig作为模板引擎,monolog作为日志记录器,Laravel Eloquent作为数据库交互,laravel mix进行js/css操作等。
如果你使用过Laravel,那么骨架结构对你来说应该是熟悉的。
安装和快速入门
服务器要求
- PHP >= 7.0.0
- PDO PHP扩展
安装Slim-skeleton
建议使用Composer安装Slim-skeleton。因此,在使用骨架之前,请确保你的机器上已经安装了Composer。
$ composer create-project sadegh-pm/slim-skeleton app-name
快速入门
- 在项目根目录下的
env.yaml
中设置数据库和其他配置 - 安装npm包:
npm install
编译资产(js/sass),使用npm dev
或npm prod
进行生产构建。有关更多选项,请参阅package.json。(您必须在机器上安装node js) - 启动服务器:
php cli serve
或composer start
- 测试:
composer test
文件和目录结构
-
app
:Command
:定义您的自定义命令行Controller
:您的应用控制器Dependency/dependency.php
:定义您的应用依赖Events
:您的应用事件Kernel
:应用启动过程,包括twig、logger、数据库、错误处理程序依赖和辅助工具Listeners
:您的应用监听器Middleware/middleware.php
:定义您的应用中间件Observers
:您的应用观察者register_observer.php
:注册应用观察者
在app目录的根目录中定义应用模型
-
config
:配置文件,定义您的配置文件,然后通过config
辅助工具访问它们 -
public
:公共目录 -
resources
:应用资源目录js
:应用js文件lang
:应用本地化语言目录和文件sass
:应用css文件views
:应用视图目录和文件
-
routes
:web.php
定义应用Web路由api.php
定义应用API路由
-
storage
:app
用于上传和其他目的framework
:用于框架使用,如twig缓存目录log/app.log
:应用日志文件
-
tests
:测试目录 -
env.yaml
环境配置文件
本地开发
如果您需要在本地服务器上进行开发,您可以使用骨架核心命令或Composer命令。这些命令将在https://:8000启动开发服务器
// Skeleton Command $ php cli serve // Composer Command $ composer start
部署到共享主机
- 将public目录下的所有目录和文件复制到主机上的public_html
- 将所有其他目录和文件复制到public_html之前的一个目录中
- 编辑public_html中的index.php并修复boot.php文件的路径(可能是"/../slim-skeleton/bootstrap/boot.php")
- 编辑env.yaml中的app url
- 访问您的应用程序URL,一切都应该正常。
配置文件
所有配置文件都存储在config目录中。
您可以使用get_env辅助函数从配置文件中的这些变量检索值 但如果您需要在应用程序或Twig中使用值,则像下一节中那样使用config辅助函数。
'debug' => get_env('app.debug', true)
访问配置值
您可以从应用程序的任何地方轻松地使用全局config辅助函数访问配置值。
$value = config('app.timezone');
缓存
Skeleton使用PSR-6 Cache,并提供redis和文件缓存驱动程序,您可以在env.yaml中定义。缓存配置位于config/cache.php
文件中。在此文件中,您可以指定您希望应用程序中默认使用的缓存驱动程序。
您可以在app/Kernel/Util/Cache.php
中查看所有缓存方法,或在测试缓存文件的tests/Component/CacheTest.php
中查看。
验证
Skeleton使用Laravel验证,并使用validator辅助函数可以用于验证请求数据。(您可以在Laravel验证文档中查看完整文档)
您可以在tests/Component/ValidatorTest.php
中查看验证的简单示例。
命令
slim skeleton使用Silly CLI,它只是Symfony Console的一个实现。您可以通过阅读Silly CLI文档或Symfony文档来了解您可以使用它做什么。
config目录的命令文件有两个部分:command,用于用户自定义命令和skeleton核心命令。(例如,创建HelloWorldCommand)
为定义新的自定义命令
- 在
app/Command
目录中添加自定义命令类 - 在
config/command.php
的用户部分中定义它
核心命令
- php cli serve : 在https://:8000启动开发服务器(您需要在env.yaml中配置数据库)
- php cli twig:clear : 清除twig模板缓存
- php cli log:clear : 清除存储在storage目录中的skeleton日志文件
- php cli app:clear : 清除twig缓存和skeleton日志文件
- php cli make:model [model] : 创建app模型
- php cli shell : 运行PsySH,这是一个运行时开发者控制台。(可能类似于laravel中的tinker)
- php cli storage:link : 将storage目录链接到public文件夹。
您可以在app/Kernel/Command
中查看核心命令文件,并使用它来创建自定义命令。
事件
事件提供简单的观察者实现,允许您订阅和监听在应用程序中发生的事件。
- 在
app/Events
目录中创建事件类 - 在
app/Listeners
中创建它们的监听器 - 在
config/listen.php
中注册事件 - 使用
fireEvent
辅助函数来调用事件
本地化
本地化功能提供了一种方便的方式来检索各种语言中的字符串,允许您轻松地在应用程序中支持多种语言。语言字符串存储在resources/lang
目录中的文件中。在此目录中,应为应用程序支持的语言提供子目录,所有语言文件都返回一个键值字符串数组。
您可以在应用程序和twig模板中使用trans
或__
(两个下划线)辅助函数从本地文件获取值。
辅助函数
Skeleton附带了一些辅助函数。有关更多信息,请参阅app/Kernel/helper.php
route($name,$params)
(#route-anchors) 在PHP和Twig中构建包含基本路径的命名路由的路径config($key,$default)
在 PHP 和 Twig 中使用简单的或嵌套的键获取配置设置。嵌套的键类似于使用点号表示法的 JSON 路径。asset($file)
在 PHP 和 Twig 中获取资源 URLinput($key,$default)
在 PHP 和 Twig 中从查询字符串中获取参数值或检索请求体中提供的任何参数table($tableName)
在 PHP 和 Twig 中使用 Eloquent 查询构建器对数据库表开始流畅查询trans($key)
在 PHP 和 Twig 中从本地文件获取值
数据库
Eloquent ORM
骨架使用 Laravel Eloquent 和数据库系统,有关 Eloquent 的更多信息,您可以查看 Laravel Eloquent 文档,您可以使用 table
辅助程序与数据库交互,更多详细信息请参阅 Laravel 查询构建器文档
观察者
如果您在模型上监听许多事件,您可以使用观察者将所有监听器组合到一个单独的类中。观察者类的名称反映了您希望监听的 Eloquent 事件。这些方法中的每一个都接受模型作为它们唯一的参数。
- 在
app/Observers
中添加观察者类 - 在
app/Observers/register_observer.php
中注册观察者
存储
骨架使用强大的 filesystem,您可以在 Filesystem 文档 中查看更多信息,或者参考 Laravel 文件存储文档。
要访问公共目录中的存储文件,需要通过以下命令创建符号链接
$ php cli storage:link
以下部分是测试如何使用存储(tests/Component/StorageTest.php
)
public function testSaveFileOnStorage() { /** @var Filesystem $storage */ $storage = dependency(Filesystem::class); $testFile = "test_file.txt"; $content = uniqid('random_text'); $creationStat = $storage->put($testFile, $content); $this->assertTrue($creationStat); $this->assertTrue($storage->get($testFile)->exists()); $this->assertEquals($content, $storage->read($testFile)); $this->assertTrue($storage->delete($testFile)); }
Twig
骨架使用 twig 模板引擎,这是一个适用于 PHP 的现代模板引擎
快速: Twig 将模板编译成普通的优化 PHP 代码。与普通 PHP 代码相比,开销已经减少到非常小。
安全: Twig 具有沙箱模式来评估不受信任的模板代码。这允许 Twig 在用户可以修改模板设计的应用程序中用作模板语言。
灵活: Twig 由灵活的词法和语法分析器驱动。这允许开发者定义自己的自定义标签和过滤器,并创建自己的 DSL。
有关 twig 的更多信息,您可以查看 Twig 页面。
- 所有模板位于
resources/views
目录。 - 您可以在 twig 文件中使用所有辅助程序。
测试
tests/Functional
包含用于测试的示例 tests.phpunit。在目录中定义您的功能测试。
使用 composer test
来运行测试。
许可证
Slim-skeleton 框架是开源软件,许可证为 MIT 许可证。