filter() public static method

By default, a single match in the $filter bit field filters properties out, following an "or" logic. When EXCLUDE_STRICT is set, an "and" logic is applied: all bits must match for a property to be removed.
public static filter ( array $a, integer $filter, array $listedProperties = [], &$count ) : array
$a array The array containing the properties to filter
$filter integer A bit field of Caster::EXCLUDE_* constants specifying which properties to filter out
$listedProperties array List of properties to exclude when Caster::EXCLUDE_VERBOSE is set, and to preserve when Caster::EXCLUDE_NOT_IMPORTANT is set
return array The filtered array
示例#1
0
文件: Model.php 项目: cawaphp/cawa
 /**
  * @param ModelBase $model
  * @param array $a
  * @param Stub $stub
  * @param bool $isNested
  *
  * @return array
  */
 public static function cast(ModelBase $model, array $a, Stub $stub, bool $isNested)
 {
     if ($isNested) {
         $a = Caster::filter($a, Caster::EXCLUDE_VERBOSE, ["" . '*' . "" . 'changedProperties']);
     }
     return $a;
 }
示例#2
0
 /**
  * @param Base $model
  * @param array $a
  * @param Stub $stub
  * @param bool $isNested
  *
  * @return array
  */
 public static function cast(Base $model, array $a, Stub $stub, bool $isNested)
 {
     if ($isNested) {
         $a = Caster::filter($a, Caster::EXCLUDE_VERBOSE, ["" . Base::class . "" . 'added', "" . Base::class . "" . 'removed']);
     }
     return $a;
 }
 /** @dataProvider provideFilter */
 public function testFilter($filter, $expectedDiff, $listedProperties = null)
 {
     if (null === $listedProperties) {
         $filteredArray = Caster::filter($this->referenceArray, $filter);
     } else {
         $filteredArray = Caster::filter($this->referenceArray, $filter, $listedProperties);
     }
     $this->assertSame($expectedDiff, array_diff_assoc($this->referenceArray, $filteredArray));
 }
示例#4
0
 public static function castXmlReader(\XmlReader $reader, array $a, Stub $stub, $isNested)
 {
     $props = Caster::PREFIX_VIRTUAL . 'parserProperties';
     $info = array('localName' => $reader->localName, 'prefix' => $reader->prefix, 'nodeType' => new ConstStub(self::$nodeTypes[$reader->nodeType], $reader->nodeType), 'depth' => $reader->depth, 'isDefault' => $reader->isDefault, 'isEmptyElement' => \XmlReader::NONE === $reader->nodeType ? null : $reader->isEmptyElement, 'xmlLang' => $reader->xmlLang, 'attributeCount' => $reader->attributeCount, 'value' => $reader->value, 'namespaceURI' => $reader->namespaceURI, 'baseURI' => $reader->baseURI, $props => array('LOADDTD' => $reader->getParserProperty(\XmlReader::LOADDTD), 'DEFAULTATTRS' => $reader->getParserProperty(\XmlReader::DEFAULTATTRS), 'VALIDATE' => $reader->getParserProperty(\XmlReader::VALIDATE), 'SUBST_ENTITIES' => $reader->getParserProperty(\XmlReader::SUBST_ENTITIES)));
     if ($info[$props] = Caster::filter($info[$props], Caster::EXCLUDE_EMPTY, array(), $count)) {
         $info[$props] = new EnumStub($info[$props]);
         $info[$props]->cut = $count;
     }
     $info = Caster::filter($info, Caster::EXCLUDE_EMPTY, array(), $count);
     // +2 because hasValue and hasAttributes are always filtered
     $stub->cut += $count + 2;
     return $a + $info;
 }
示例#5
0
文件: Presenter.php 项目: saj696/pipe
 public function __construct(OutputFormatter $formatter)
 {
     $this->dumper = new Dumper($formatter);
     $this->dumper->setStyles($this->styles);
     $this->cloner = new Cloner();
     $this->cloner->addCasters(array('*' => function ($obj, array $a, Stub $stub, $isNested, $filter = 0) {
         if ($filter || $isNested) {
             if ($obj instanceof \Exception) {
                 $a = Caster::filter($a, Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY, $this->exceptionsImportants);
             } else {
                 $a = Caster::filter($a, Caster::EXCLUDE_PROTECTED | Caster::EXCLUDE_PRIVATE);
             }
         }
         return $a;
     }));
 }