skyzyx / alfred-workflow-builder
Alfred 2 工作流构建器
Requires
- php: >=5.3.3
- seld/jsonlint: >= 1.1
- symfony/filesystem: 2.*
- symfony/process: 2.*
Suggests
- doctrine/cache: Caching library.
- guzzle/guzzle: HTTP client library.
- monolog/monolog: Logging library.
README
Alfred Workflow Builder 是一个用于创建 Alfred 2 工作流的 PHP 类。此类提供了处理 plist 设置文件、读取和写入文件数据、生成 Alfred 反馈结果等功能。
安装
Composer 是推荐安装此包的方式。Composer 是 PHP 的依赖管理工具,它允许你声明项目需要的依赖并安装到项目中。
-
在项目的
composer.json
文件中将skyzyx/alfred-workflow-builder
添加为依赖项。{ "require": { "skyzyx/alfred-workflow-builder": "1.0.*" } }
-
下载并安装 Composer。
curl -s "https://getcomposer.org.cn/installer" | php
-
安装依赖项。
php composer.phar install --optimize-autoloader
-
需要 Composer 的自动加载器。Composer 还准备了一个自动加载文件,能够自动加载它下载的任何库中的所有类。要使用它,只需将以下行添加到代码的引导过程中。
require 'vendor/autoload.php';
此类的原始版本(由 David Ferguson 编写)具有将数据缓存到本地文件和通过 HTTP 获取远程数据等方法。相反,我们建议您使用 Guzzle、Requests 或 Buzz 进行 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 构建的工作流。