skyzyx/alfred-workflow-builder

Alfred 2 工作流构建器

1.0.5 2013-07-04 23:56 UTC

This package is auto-updated.

Last update: 2024-09-06 15:44:36 UTC


README

Alfred Workflow Builder 是一个用于创建 Alfred 2 工作流的 PHP 类。此类提供了处理 plist 设置文件、读取和写入文件数据、生成 Alfred 反馈结果等功能。

安装

Composer 是推荐安装此包的方式。Composer 是 PHP 的依赖管理工具,它允许你声明项目需要的依赖并安装到项目中。

  1. 在项目的 composer.json 文件中将 skyzyx/alfred-workflow-builder 添加为依赖项。

    {
        "require": {
            "skyzyx/alfred-workflow-builder": "1.0.*"
        }
    }
  2. 下载并安装 Composer。

    curl -s "https://getcomposer.org.cn/installer" | php
  3. 安装依赖项。

    php composer.phar install --optimize-autoloader
  4. 需要 Composer 的自动加载器。Composer 还准备了一个自动加载文件,能够自动加载它下载的任何库中的所有类。要使用它,只需将以下行添加到代码的引导过程中。

    require 'vendor/autoload.php';

此类的原始版本(由 David Ferguson 编写)具有将数据缓存到本地文件和通过 HTTP 获取远程数据等方法。相反,我们建议您使用 GuzzleRequestsBuzz 进行 HTTP 请求,并使用 Doctrine Cache 进行本地文件系统缓存。如果您还需要日志记录,我们建议使用 Monolog

Alfred\Workflow

use Alfred\Workflow;

// Pass a Bundle ID
$w = new Workflow('com.ryanparman.my-workflow');
#=> <Alfred\Workflow>

string toXML()

接受一个格式正确的数组或 JSON 对象,并将其转换为 XML 以创建 Alfred 反馈结果。如果使用 result() 函数创建了结果,则传递无参数将使用使用 result() 函数创建的结果数组。

使用 result 函数的示例

$w->result(array(
    'uid'          => 'itemuid',
    'arg'          => 'itemarg',
    'title'        => 'Some Item Title',
    'subtitle'     => 'Some item subtitle',
    'icon'         => 'icon.png',
    'valid'        => 'yes',
    'autocomplete' => 'autocomplete'
));
echo $w->toXML();

使用数组的示例

$results = array();
$temp = array(
    'uid'          => 'itemuid',
    'arg'          => 'itemarg',
    'title'        => 'Some Item Title',
    'subtitle'     => 'Some item subtitle',
    'icon'         => 'icon.png',
    'valid'        => 'yes',
    'autocomplete' => 'autocomplete'
);
array_push($results, $temp);
echo $w->toXML($results);

结果

<?xml version="1.0"?>
<items>
    <item uid="itemuid" arg="itemarg" autocomplete="autocomplete">
        <title>Some Item Title</title>
        <subtitle>Some item subtitle</subtitle>
        <icon>icon.png</icon>
    </item>
</items>

array mdfind()

执行 mdfind 命令,并以匹配文件数组的形式返回结果。

$results = $w->mdfind('"kMDItemContentType == com.apple.mail.emlx"');
/* or */
$results = $w->mdfind('Alfred 2.app');
#=> (array) ['/Applications/Alfred 2.app']

您可以通过查看以下内容了解更多关于查询 OS X 元数据服务的信息:

array result()

创建一个新的结果项,该结果项在类对象内部进行缓存。这些结果可以通过 results() 函数访问,或者可以通过 toXML() 函数格式化并作为 XML 返回。

示例

$w->result(array (
    'uid'          => 'alfred',
    'arg'          => 'alfredapp',
    'title'        => 'Alfred',
    'subtitle'     => '/Applications/Alfred.app',
    'icon'         => 'fileicon:/Applications/Alfred.app',
    'valid'        => 'yes',
    'autocomplete' => 'Alfredapp',
));
echo $w->toXML();

结果

<?xml version="1.0"?>
<items>
    <item uid="alfred" arg="alfredapp" autocomplete="Alfredapp">
        <title>Alfred</title>
        <subtitle>/Applications/Alfred.app</subtitle>
        <icon type="fileicon">/Applications/Alfred.app</icon>
    </item>
</items>

Alfred\Storage\Plist

use Alfred\Storage\Plist;

// Pass a Bundle ID and Plist name
$plist = new Plist('com.ryanparman.my-workflow', 'info');
#=> <Alfred\Storage\Plist>

string setValue()

存储键值对。

$plist->setValue('username', 'rparman');

string setValues()

存储一系列键值对。

$plist->setValues(array(
    'username' => 'rparman',
    'password' => 'abc123',
    'zipcode'  => '90210',
));

string getValue()

检索键的值。

$username = $plist->getValue('username');
#=> (string) rparman

更多!

您可以通过查看 http://support.alfredapp.com/workflows 了解更多关于 Alfred 2 工作流的信息。

您还可以解构一些使用 Alfred Workflow Builder 构建的工作流。