コード例 #1
0
 public function test()
 {
     $data = new \ArrayObject($this->getData());
     $this->assertEquals('aa', gs\get($data, 'a.aa'));
     $this->assertEquals(null, gs\get($data, 'c', 'default'));
     $this->assertEquals('default', gs\get($data, 'd', 'default'));
     gs\set($data, 'd', array(0, 1, 2, 3, 4, 5));
     $this->assertEquals(4, gs\get($data, 'd.4'));
 }
コード例 #2
0
 public function testMagicMethods()
 {
     $data = new MagicAccessTestClass();
     $data->first_name = 'Joe';
     $data->last_name = 'Rock';
     gs\setValue($data, 'profession', 'Stone cutter');
     gs\setValue($data, 'address', new MagicAccessTestClass());
     gs\set($data, 'address.city', 'Little Rock');
     $this->assertEquals('Joe', gs\getValue($data, 'first_name'));
     $this->assertEquals('Rock', gs\get($data, 'last_name'));
     $this->assertEquals('Little Rock', gs\get($data, 'address.city'));
 }
コード例 #3
0
ファイル: ArrayUtil.php プロジェクト: revinate/sequence
 /**
  * @param array|ArrayAccess|object $doc
  * @param string[]      $path   -- array of field names
  * @param mixed         $value
  * @return array|ArrayAccess|object
  */
 public static function setPath($doc, $path, $value)
 {
     return gs\set($doc, $path, $value);
 }
コード例 #4
0
 public function testSetNull()
 {
     $this->assertEquals(array('name' => array('first' => 'Joe')), gs\set(null, 'name.first', 'Joe'));
     $this->assertEquals(array('name.first' => 'Joe'), gs\setValue(null, 'name.first', 'Joe'));
 }
コード例 #5
0
ファイル: IterationTraits.php プロジェクト: revinate/sequence
 /**
  * Reassembles a traversed sequence into its original shape
  *
  * @param Iterator $iterator
  * @param string $pathSeparator
  * @return Sequence
  */
 public static function reassemble(Iterator $iterator, $pathSeparator = '.')
 {
     return self::wrapFunctionIntoSequenceOnDemand(function () use($iterator, $pathSeparator) {
         return Sequence::make($iterator)->reduceToSequence(array(), function ($collection, $value, $path) use($pathSeparator) {
             return gs\set($collection, $path, $value, $pathSeparator);
         });
     });
 }
コード例 #6
0
 public function testSetEmptyPath()
 {
     $uniqueObject = (object) array();
     $this->assertEquals($uniqueObject, gs\set(array(), array(), $uniqueObject));
 }
コード例 #7
0
ファイル: mappers.php プロジェクト: revinate/sequence
/**
 * Generates a function that will apply a mapping function to the record and write the result into a
 * field in the record.  The record can be an array or an object.
 *
 * The field name can be a path.
 *
 * Special case, a null record will result in: array($fieldName => $fnMap(null))
 *
 * @param string $fieldName -- field name or path
 * @param \Closure $fnMap($record, $key) -- the value returned from this function will be put into $record at $fieldName
 * @return Closure
 */
function fnMapToField($fieldName, $fnMap)
{
    return function ($record, $key = null) use($fieldName, $fnMap) {
        return gs\set($record, $fieldName, $fnMap($record, $key));
    };
}
コード例 #8
0
 /**
  * @description Sets the field value based upon the path.
  * @param array|object $data
  * @param string|array $pathToField
  * @param mixed        $value
  * @param string       $pathSeparator
  * @return mixed
  */
 public function set($data, $pathToField, $value, $pathSeparator = null)
 {
     $pathSeparator = $pathSeparator ?: $this->pathSeparator;
     return gs\set($data, $pathToField, $value, $pathSeparator);
 }