Skip to content

Commit 92ea383

Browse files
[12.x] Add Stringable::doesntContain() to match API symmetry (#57279)
* Add Stringable::doesntContain() method This adds the missing doesntContain() method to the Stringable class to provide symmetry with the contains() method. The method proxies to the existing Str::doesntContain() implementation. * Add tests for Stringable::doesntContain() method Tests cover all parameter combinations including arrays, collections, case sensitivity, and edge cases. All tests pass successfully.
1 parent 1f0bcbf commit 92ea383

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/Illuminate/Support/Stringable.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,18 @@ public function containsAll($needles, $ignoreCase = false)
222222
return Str::containsAll($this->value, $needles, $ignoreCase);
223223
}
224224

225+
/**
226+
* Determine if a given string doesn't contain a given substring.
227+
*
228+
* @param string|iterable<string> $needles
229+
* @param bool $ignoreCase
230+
* @return bool
231+
*/
232+
public function doesntContain($needles, $ignoreCase = false)
233+
{
234+
return Str::doesntContain($this->value, $needles, $ignoreCase);
235+
}
236+
225237
/**
226238
* Convert the case of a string.
227239
*

tests/Support/SupportStringableTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,19 @@ public function testContainsAll()
848848
$this->assertFalse($this->stringable('taylor otwell')->containsAll(['taylor', 'xxx']));
849849
}
850850

851+
public function testDoesntContain()
852+
{
853+
$this->assertTrue($this->stringable('taylor')->doesntContain('xxx'));
854+
$this->assertTrue($this->stringable('taylor')->doesntContain(['xxx']));
855+
$this->assertTrue($this->stringable('taylor')->doesntContain(['xxx', 'yyy']));
856+
$this->assertTrue($this->stringable('taylor')->doesntContain(collect(['xxx', 'yyy'])));
857+
$this->assertTrue($this->stringable('taylor')->doesntContain(''));
858+
$this->assertFalse($this->stringable('taylor')->doesntContain('ylo'));
859+
$this->assertFalse($this->stringable('taylor')->doesntContain('taylor'));
860+
$this->assertFalse($this->stringable('taylor')->doesntContain(['xxx', 'ylo']));
861+
$this->assertFalse($this->stringable('taylor')->doesntContain(['LOR'], true));
862+
}
863+
851864
public function testParseCallback()
852865
{
853866
$this->assertEquals(['Class', 'method'], $this->stringable('Class@method')->parseCallback('foo'));

0 commit comments

Comments
 (0)