mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-08-28 13:36:12 +02:00
The main benefit of this is so that authors who make use of .editorconfig don't end up with whitespace changes in their PRs. Spaces vs. tabs has been left alone, although that could do with a tidy-up in SS4 after the switch to PSR-1/2. The command used was this: for match in '*.ss' '*.css' '*.scss' '*.html' '*.yml' '*.php' '*.js' '*.csv' '*.inc' '*.php5'; do find . -path ./thirdparty -not -prune -o -path ./admin/thirdparty -not -prune -o -type f -name "$match" -exec sed -E -i '' 's/[[:space:]]+$//' {} \+ find . -path ./thirdparty -not -prune -o -path ./admin/thirdparty -not -prune -o -type f -name "$match" | xargs perl -pi -e 's/ +$//' done
105 lines
2.3 KiB
PHP
105 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* Lets you wrap a bunch of array data, or object members, into a {@link ViewableData} object.
|
|
*
|
|
* <code>
|
|
* new ArrayData(array(
|
|
* "ClassName" => "Page",
|
|
* "AddAction" => "Add a new Page page",
|
|
* ));
|
|
* </code>
|
|
*
|
|
* @package framework
|
|
* @subpackage view
|
|
*/
|
|
class ArrayData extends ViewableData {
|
|
|
|
/**
|
|
* @var array
|
|
* @see ArrayData::_construct()
|
|
*/
|
|
protected $array;
|
|
|
|
/**
|
|
* @param object|array $value An associative array, or an object with simple properties.
|
|
* Converts object properties to keys of an associative array.
|
|
*/
|
|
public function __construct($value) {
|
|
if (is_object($value)) {
|
|
$this->array = get_object_vars($value);
|
|
} elseif (ArrayLib::is_associative($value)) {
|
|
$this->array = $value;
|
|
} elseif (is_array($value) && count($value) === 0) {
|
|
$this->array = array();
|
|
} else {
|
|
$message = 'Parameter to ArrayData constructor needs to be an object or associative array';
|
|
throw new InvalidArgumentException($message);
|
|
}
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Get the source array
|
|
*
|
|
* @return array
|
|
*/
|
|
public function toMap() {
|
|
return $this->array;
|
|
}
|
|
|
|
/**
|
|
* Gets a field from this object.
|
|
*
|
|
* @param string $field
|
|
*
|
|
* If the value is an object but not an instance of
|
|
* ViewableData, it will be converted recursively to an
|
|
* ArrayData.
|
|
*
|
|
* If the value is an associative array, it will likewise be
|
|
* converted recursively to an ArrayData.
|
|
*/
|
|
public function getField($f) {
|
|
$value = $this->array[$f];
|
|
if (is_object($value) && !$value instanceof ViewableData) {
|
|
return new ArrayData($value);
|
|
} elseif (ArrayLib::is_associative($value)) {
|
|
return new ArrayData($value);
|
|
} else {
|
|
return $value;
|
|
}
|
|
}
|
|
/**
|
|
* Add or set a field on this object.
|
|
*
|
|
* @param string $field
|
|
* @param mixed $value
|
|
*/
|
|
public function setField($field, $value) {
|
|
$this->array[$field] = $value;
|
|
}
|
|
|
|
/**
|
|
* Check array to see if field isset
|
|
*
|
|
* @param string Field Key
|
|
* @return bool
|
|
*/
|
|
public function hasField($f) {
|
|
return isset($this->array[$f]);
|
|
}
|
|
|
|
/**
|
|
* Converts an associative array to a simple object
|
|
*
|
|
* @param array
|
|
* @return obj $obj
|
|
*/
|
|
public static function array_to_object($arr = null) {
|
|
$obj = new stdClass();
|
|
if ($arr) foreach($arr as $name => $value) $obj->$name = $value;
|
|
return $obj;
|
|
}
|
|
|
|
}
|