示例#1
0
 public function testOccurences()
 {
     $str = new Text('let it go');
     $this->assertTrue($str->startsWith('let'));
     $this->assertTrue($str->startsWith(new Text('let')));
     $this->assertFalse($str->startsWith('go'));
     $this->assertFalse($str->startsWith(new Text('go')));
     $this->assertTrue($str->endsWith('go'));
     $this->assertTrue($str->endsWith(new Text('go')));
     $this->assertFalse($str->endsWith('let'));
     $this->assertFalse($str->endsWith(new Text('let')));
     $this->assertTrue($str->contains('it'));
     $this->assertTrue($str->contains(new Text('it')));
     $this->assertFalse($str->contains('Hulk'));
     $this->assertFalse($str->contains(new Text('Hulk')));
     $this->assertTrue($str->equals('let it go'));
     $this->assertTrue($str->equals(new Text('let it go')));
     $this->assertFalse($str->equals('Let It Go'));
     $this->assertTrue($str->equalsIgnoreCase('Let It Go'));
     $this->assertTrue($str->equalsIgnoreCase(new Text('Let It Go')));
     $this->assertFalse($str->isEmpty());
 }
示例#2
0
 /**
  * @param mixed $query
  * @param mixed $filter
  * @return void
  */
 protected function applyFilter($query, $filter)
 {
     if (is_array($filter)) {
         // filter by fields
         if (isset($filter['fields'])) {
             foreach ($filter['fields'] as $column => $value) {
                 $pos = strpos($column, '.');
                 if ($pos !== false) {
                     $rel = NameUtils::toStudlyCase(substr($column, 0, $pos));
                     $col = substr($column, $pos + 1);
                     $method = 'use' . $rel . 'Query';
                     if (method_exists($query, $method)) {
                         $sub = $query->{$method}();
                         $this->applyFilter($sub, ['fields' => [$col => $value]]);
                         $sub->endUse();
                     }
                 } else {
                     $method = 'filterBy' . NameUtils::toStudlyCase($column);
                     if (method_exists($query, $method)) {
                         $query->{$method}($value);
                     }
                 }
             }
         }
         // filter by features
         if (isset($filter['features'])) {
             $features = new Text($filter['features']);
             if ($features->contains('random')) {
                 $query->addAscendingOrderByColumn('RAND()');
             }
         }
     }
     if (method_exists($this, 'filter')) {
         $this->filter($query, $filter);
     }
 }