ferrisbane/shortdb

一个PHP助手包,用于将静态“数据库”内容转换为动态内容。

v0.2.0 2020-03-09 19:17 UTC

This package is auto-updated.

Last update: 2024-09-10 05:27:17 UTC


README

一个PHP助手包,用于将静态内容转换为动态内容。

示例

以下是有用的示例,但如果您之前尚未设置shortdb包,请先阅读安装指南

此仓库包含示例简码和有用的代码,展示了如何在项目中使用此包。

安装

此包需要PHP 5.6+(未在较低版本上进行测试)。

此包在Windows和Linux Web服务器上运行(未在Mac上测试)。

您可以通过composer进行安装:在项目文件夹内使用composer require ferrisbane/shortdb,或者在composer.json中包含此包。

"ferrisbane/shortdb": "0.1.*"

然后运行composer installcomposer update来下载包。

要在Laravel 5中使用此包,请将ShortDB服务提供者添加到config/app.php中的服务提供者列表。

'providers' => [
    ...

    Ferrisbane\ShortDB\Laravel5ServiceProvider::class

    ...
];

然后使用php artisan vendor:publish来发布配置。

如果您已更改项目命名空间,您可以在config/shortdb.php中定义它。

'namespace' => 'App',

设置

一旦shortdb包已安装到您的项目中,您就需要设置/创建一个shortdb类。

此shortdb类将允许shortdb包以您想要的方式转换静态文本和处理。

在Laravel中,在您的app文件夹内创建一个Shortcodes文件夹。

现在,您应该有一个如下所示的项目结构:/app/Shortcodes/

Shortcodes文件夹内创建一个PHP文件,命名此文件为该类将处理的内容。

例如,文件名为:FontAwesome.php。此Font Awesome文件将允许我们处理Font Awesome图标。

您可以在项目中创建所需数量的简码文件。

请参阅我们的示例FontAwesome简码:示例简码(Font Awesome)

在简码类中,有用于加载和处理简码的变量和函数。

  • $code变量用于定义此简码的唯一名称/代码。

  • $description变量目前未使用,但将来将用于描述此简码的功能。

  • $arguments变量是一个数组,包含简码将接受的参数,例如'icon'。在'icon'参数内部,您可以定义它是否为必需的。

'icon' => [
    'required' => true
],
  • process函数将process简码。public function process(array $arguments)

shortdb包将传递所有参数到该函数,您现在可以在其中处理所需的内容,完成后返回处理后的字符串。

目前,getJavascriptDescriptorgetOptions函数未使用。

用法

使用shortdb包很简单。

格式化简码字符串

首先您需要一个字符串,这可以来自数据库、env、config等。

假设我们有的字符串是

$string = '{fa|icon:camera-retro}';

shortdb包将在传递的字符串内部查找花括号{}中的shortcodes

简码可以在字符串的任何位置,您可以有多个不同的简码,例如

$string = 'content... {fa|icon:camera-retro} ...more content... {fa|icon:cog} ...even more content';

短代码允许多个参数,上述示例中的第一个:fa告诉shortdb包使用哪个短代码。

这是在短代码php文件中使用$code变量定义的。这将需要是唯一的。

我们可以在短代码中添加更多参数,这些参数使用管道|分割,例如shortcodekey|argument1|argument2

每个参数可以传递值(就像键值对一样)。要传递带有参数的值,请使用冒号:,例如icon:cog

这将传递一个参数到您的短代码处理函数。您可以使用以下方式获取值

$arguments['icon']

如果我们通过短代码传递了icon:cog,当在处理函数内部调用上述代码时,我们将检索到cog

处理字符串

将'未处理的'字符串传递到以下函数/助手,然后将其处理成动态内容,在我们的例子中,它将是一个FontAwesome HTML图标标签。

例如,{fa|icon:cog|spin:true}将被处理成<i class="fa fa-cog fa-spin" aria-hidden="true"></i>

处理FontAwesome图标只是开始,通过创建自己的,您可以处理任何您需要的内容。

例如,{ip|country:name}可以根据连接客户端的IP地址处理成United Kingdom

或者{price|product:my-product-slug|currency:gbp}处理成£100或者{price|product:another-product|currency:usd}处理成$259

如果您想在'静态'内容(例如数据库内容)中放置动态内容(如产品价格),这非常有用。如果使用文本编辑器/wysiwyg,其中HTML或动态内容不起作用,则非常有用。

函数/助手

在Laravel中,我们可以将我们的字符串传递给shortdb服务容器实例

app('shortdb')->process($string);

或者,由于该包附带一个有用的Laravel助手函数,只需调用该助手函数并传递一个字符串,然后您将获得处理后的字符串

shortdb($string);

在blade中使用助手函数

{!! shortdb($string) !!}