• Czas czytania ~4 min
  • 03.04.2024

W tym tygodniu zespół Laravela wydał wersję 11.2, która zawiera pomocnika obsługi fluent(), pomocnika context(), ulepszoną obsługę brakującej bazy danych podczas migrate operacji i nie tylko.

Fluent Helper

Philo Hermans wniósł fluent() funkcję pomocniczą podczas pracy z tablicami wielowymiarowymi. Klasa Fluent jest w frameworku Laravel od dłuższego czasu, jednak to żądanie ściągnięcia wprowadza wygodną metodę pomocnika do tworzenia płynnej instancji obiektu:

$data = [
    'user' => [
        'name' => 'Philo',
        'address' => [
            'city' => 'Amsterdam',
            'country' => 'Netherlands',
        ]
    ],
    'posts' => [
        [
            'title' => 'Post 1',
        ],
        [
            'title' => 'Post 2',
        ]
    ]
];
collect($data)->get('user');
fluent($data)->user;

collect($data)->get('user')['name'];
fluent($data)->get('user.name');

collect(collect($data)->get('posts'))->pluck('title');
fluent($data)->collect('posts')->pluck('title');

json_encode(collect($data)->get('user')['address']);
fluent($data)->scope('user.address')->toJson();

Pomocnik

kontekstuMichael Nabil współtworzył funkcję pomocnika wygody context() do zarządzania kontekstem. W zależności od przekazanych argumentów można dodać do kontekstu, pobrać obiekt kontekstu lub pobrać go (z opcjonalną niestandardową wartością domyślną):

// Add user information to the context
context(['user' => auth()->user()]);

// Retrieve the context object
$context = context();

// Retrieve user information from the context
$user = context('user');

// Optional custom default value if not found.
$some_key = context('key_that_does_not_exist', false);

Wartość domyślna dla getterów kontekstuMichael Nabil przyczynił się do obsługi wartości domyślnej w getterach

kontekstu:

// Before: Returns null if not found
Context::get('is_user');
Context::getHidden('is_user');

// After: Returns `false` if not found
Context::get('is_user', false); // false
Context::getHidden('is_user', false); // false
Context::get('is_user'); // null

Metody

asercji testu łańcucha zadańGünther Debrauwer i assertHasChain() assertDoesntHaveChain() metody:

public function test_job_chains_foo_bar_job(): void
{
    $job = new TestJob();

    $job->handle();

    $job->assertHasChain([
        new FooBarJob();
    ]);
    // $job->assertDoesntHaveChain();
}

Lepsza obsługa

tworzenia/czyszczenia bazy danychDries Vints przyczynił się do lepszego przekazywania błędów bazy danych (#50836) podczas uruchamianiamigrate, gdy baza danych nie została jeszcze utworzona, a także zaktualizowania migrate:fresh polecenia w celu usprawnienia procesu, gdy baza danych nie istnieje #50838:

Jeśli polecenie zostanie wywołanemigrate:fresh, gdy nie ma jeszcze utworzonej żadnej bazy danych, zakończy się niepowodzeniem podczas próby wyczyszczenia bazy danych. To żądanie ściągnięcia rozwiązuje ten problem, najpierw sprawdzając, czy tabela migracji istnieje, a jeśli nie, natychmiast przejdź do polecenia migrate, pomijając polecenie db:wipe . Spowoduje to wywołanie przepływu polecenia migracji, a następnie dotarcie do punktu, w którym polecenie poprosi użytkownika o utworzenie bazy danych.

W połączeniu z #50836 zapewni to bardziej bezproblemowe doświadczenie dla osób próbujących zainstalować Jetstream za pomocą instalatora Laravela i decydujących się nie tworzyć bazy danych.

Powyższy opis pochodzi z żądania ściągnięcia #50838.

String Trim usuwa niewidoczne znaki

Dasun Tharanga przyczynił się do aktualizacji oprogramowania pośredniczącego frameworkaTrimStrings, w którym niewidoczne znaki nie są przycinane podczas żądania HTTP, co może powodować problemy podczas przesyłania formularzy. Aby uzyskać szczegółowe informacje, zobacz Pull Request #50832 (Żądanie ściągnięcia #50832).

Informacje o

wydaniu Pełną listę nowych funkcji i aktualizacji można zobaczyć poniżej oraz różnice między wersjami 11.1.0 i 11.2.0 w witrynie GitHub. Poniższe informacje o wydaniu pochodzą bezpośrednio z dziennika zmian:

wersja 11.2.0

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297