mcaskill/tokenlist

此包已被废弃,不再维护。未建议替代包。

StringTokenList 类表示一组由空格分隔的独立令牌。

dev-master 2016-02-24 19:53 UTC

This package is auto-updated.

Last update: 2020-09-06 00:37:05 UTC


README

StringTokenList 类表示一组由空格分隔的独立令牌。它提供了 PHP 数组的主要功能。主要区别在于 StringTokenList

  • 只允许整数作为索引,
  • 总是区分大小写,
  • 并且排除重复值。

StringTokenList 类实际上是 PHP 对 DOMTokenList JavaScript 接口的实现。

该类通过

  • DOMTokenList
    • DOMClassList
    • DOMRelList

安装

使用 Composer

$ composer require mcaskill/tokenlist
{
	"require": {
		"mcaskill/tokenlist": "dev-master"
	}
}
<?php

require 'vendor/autoload.php';

use McAskill\TokenList\StringTokenList;

printf( (string) ( new StringTokenList([ 'foo', 'baz', 'qux' ]) ) );

不使用 Composer

为什么你不使用 composer?下载仓库并将文件保存到你的项目路径中的某个位置。

<?php

require 'path/to/StringTokenList.php';
require 'path/to/DOMTokenList.php';

use McAskill\TokenList\DOMTokenList;

printf( ( new DOMTokenList([ 'foo', 'baz', 'qux' ]) )->attr() );

示例

请参阅每个类的源代码以获取更多使用示例。

示例 #1 基本用法

<?php

$obj = new StringTokenList;

$obj->add('foo baz qux');
var_dump( $obj->value );

$obj->add([ 'foo', 'not', 'qux', 'xor' ]);
var_dump( $obj->value );

$obj->remove([ 'foo', 'qux' ]);
var_dump( $obj->value );

$obj->replace( 'not', 'and' );
var_dump( $obj->value );

$obj->toggle( 'foo' );
var_dump( $obj->value );

$obj->toggle( 'foo' );
var_dump( $obj->value );

var_dump( $obj->contains('and') );

var_dump( $obj->item(1) );

var_dump( (string) $obj );

var_dump( count( $obj ) ); // Equivalent to $obj->count();

上述示例将输出类似以下内容

array (
  0 => 'foo',
  1 => 'baz',
  2 => 'qux',
)
array (
  0 => 'foo',
  1 => 'baz',
  2 => 'qux',
  3 => 'not',
  4 => 'xor',
)
array (
  0 => 'baz',
  1 => 'not',
  2 => 'xor',
)
array (
  0 => 'baz',
  1 => 'and',
  2 => 'xor',
)
array (
  0 => 'baz',
  1 => 'and',
  2 => 'xor',
  3 => 'foo',
)
array (
  0 => 'baz',
  1 => 'and',
  2 => 'xor',
)
bool(true)
string(3) "xor"
string(11) "baz xor and"
int(3)

示例 #2 语法糖

<?php

$obj = new StringTokenList;

$obj[] = 'foo';          // Equivalent to $obj->add('foo');
$obj['baz'] = true;      // Equivalent to $obj->add('baz');
$obj['baz'] = false;     // Equivalent to $obj->remove('baz');
unset( $obj['foo'] );    // Equivalent to $obj->remove('foo');
unset( $obj[0] );        // Equivalent to $obj->remove( $obj->item(0) );
$obj['foo'] = 'qux';     // Equivalent to $obj->replace('foo', 'qux');
isset( $obj['foo'] );    // Equivalent to $obj->contains('foo');
$obj['foo'];             // Equivalent to $obj->contains('foo');
$obj[0];                 // Equivalent to $obj->item(0);