sadegh-pm/slim-skeleton

Laravel 风格的精简骨架

安装: 46

依赖项: 0

建议者: 0

安全: 0

星标: 18

关注者: 2

分支: 1

开放问题: 0

语言:JavaScript

类型:项目

v2.0.2 2018-10-18 12:53 UTC

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 devnpm prod进行生产构建。有关更多选项,请参阅package.json。(您必须在机器上安装node js
  • 启动服务器:php cli servecomposer 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 中获取资源 URL
  • input($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 许可证