У класі Fluent тепер з'явилися методи isEmpty() та isNotEmpty(), які дозволяють перевіряти, чи містить екземпляр дані
Раніше для перевірки наявності даних у екземплярі Fluent доводилося використовувати непрямі методи:
use Illuminate\Support\Fluent;
$fluent = new Fluent(['name' => 'Laravel News']);
if (count($fluent->toArray()) > 0) {
// Має вміст
}
if (isset($fluent->name) || isset($fluent->url)) {
// Має певний вміст
}
Нові методи забезпечують прямі булеві перевірки:
$populated = new Fluent(['name' => 'Laravel News', 'url' => 'https://laravel-news.com']);
$empty = new Fluent();
$populated->isEmpty(); // false
$populated->isNotEmpty(); // true
$empty->isEmpty(); // true
$empty->isNotEmpty(); // false
Обробка конфігурацій демонструє практичне застосування:
use Illuminate\Support\Fluent;
class ConfigurationProcessor
{
public function processSection(Fluent $config)
{
if ($config->isEmpty()) {
return $this->getDefaultConfiguration();
}
return $this->buildConfigurationArray($config);
}
public function mergeConfigurations(array $sections)
{
$merged = new Fluent();
foreach ($sections as $section) {
if ($section->isNotEmpty()) {
$merged = $merged->merge($section->toArray());
}
}
return $merged->isNotEmpty() ? $merged : $this->getDefaultConfiguration();
}
}
Ці методи можуть використовуватися в умовній логіці без перетворення в масив:
if ($configData->isNotEmpty()) {
$this->processConfiguration($configData);
} else {
$this->loadDefaultConfiguration();
}
Завдяки цим методам відпадає необхідність перетворювати екземпляри Fluent на масиви або перевіряти окремі властивості, просто щоб з'ясувати, чи містить екземпляр будь-які дані