此包已被弃用且不再维护。作者建议使用kristos80/opton包代替。

Optionr是一个简单的辅助工具,使得从一组选项中获取一个选项变得极其容易,无需进行所有那些'isset'和'array_key_exists'比较。

v3.3.0 2020-02-06 09:23 UTC

This package is auto-updated.

Last update: 2022-09-29 13:37:45 UTC


README

Codacy Badge Maintainability

安装

使用composer安装最新版本。

$ composer require kristos80/optionr2

Optionr

Optionr是一个简单的辅助工具,具有一个单独的方法->get(),使得从一组选项中获取一个选项变得极其容易

/*
* @param string|array|object $name
* @param array|object $pool
* @param mixed $default
* @param bool $sensitive
* @param bool|array $acceptedValues
* @return mixed
*/
public function get($name = '', $pool = array(), $default = NULL, $sensitive = FALSE, $acceptedValues = FALSE) 

版本2.0.0更新

类现在是可调用的,因此所有示例都可以重写,无需使用->get()方法

当类在另一个类中使用时,类应该用()包裹

($this->options)($name,$pool)

这里

版本3.0.0更新

get方法现在可以接受一个配置数组/对象作为单个参数。请看示例

示例

示例包括但不限于

require_once 'vendor/autoload.php';
$options = new \Kristos80\Optionr2\Optionr();

# Example 1 ================================
$example1LookingForVar = 'index1';
$example1Pool = array(
	'index1' => 'valueOfIndex1',
	'index2' => 'valueOfIndex2',
);

$example1Result1 = $options->get($example1LookingForVar, $example1Pool);
$example1Result2 = $options->get(array(
	'name' => $example1LookingForVar,
	'pool' => $example1Pool,
));

# Example 1 print ================================
var_dump($example1Result1);
var_dump($example1Result2);
var_dump($example1Result1 === $example1Result2);

echo "\r\n";

# Example 2 ================================
$example2LookingForVar = array(
	'index2',
	'index1'
);

$example2Pool = new \stdClass();
$example2Pool->index1 = 'valueOfIndex1';
$example2Pool->index2 = 'valueOfIndex2';

$example2Result = $options->get(array(
	'name' => $example2LookingForVar,
	'pool' => $example2Pool,
));

# Example 2 print ================================
var_dump($example2Result);

echo "\r\n";

# Example 3 ================================
$example3LookingForVar = array(
	'index2',
	'index1',
	'index0',
);

$example3Pool = new \stdClass();
$example3Pool->index4 = 'valueOfIndex4';
$example3Pool->index5 = 'valueOfIndex5';
$example3Pool->index6 = 'valueOfIndex6';

$example3Result = $options->get(array(
	'name' => $example3LookingForVar,
	'pool' => $example3Pool,
	# default can be passed as defaultValue as well ;) === 'defaultValue' => 'defaultValue'
	'default' => 'defaultValue',
));

# Example 3 print ================================
var_dump($example3Result);

echo "\r\n";

# Example 4 ================================
$example4LookingForVar = 'index4';

$example4Pool = new \stdClass();
$example4Pool->index4 = 'valueOfIndex4';

$example4DefaultValue = 'anyOtherValueButNotIndex4';

$example4SensitiveSearch = FALSE;

$example4AcceptedValues = array(
	'valueOfIndex4IsNotAllowed',
	'anyOtherValueButNotIndex4',
);

$example4Result = $options->get($example4LookingForVar, $example4Pool, $example4DefaultValue, $example4SensitiveSearch, $example4AcceptedValues);
# Example 4 print ================================
var_dump($example4Result);

echo "\r\n";

# Example 5 ================================
$example5LookingForVar = 'Index4';

$example5Pool = array(
	'index4' => 'valueOfIndex4'
);

$example5DefaultValue = NULL;

$example5SensitiveSearch = TRUE;

$example5Result = $options->get($example5LookingForVar, $example5Pool, $example5DefaultValue, $example5SensitiveSearch);
# Example 5 print ================================
var_dump($example5Result);

echo "\r\n";

/** Prints ================================
string(13) "valueOfIndex1"
string(13) "valueOfIndex1"
bool(true)

string(13) "valueOfIndex2"

string(12) "defaultValue"

string(25) "anyOtherValueButNotIndex4"

NULL

 ================================ **/