✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Використання типів повернення Nullable у PHP

31

«Одна з найприємніших функцій, які надає PHP, — підказка типу спеціально для тих, хто має досвід об’єктно-орієнтованого програмування.

З посібника PHP :

Оголошення типу дозволяють функціям вимагати, щоб параметри були певного типу під час виклику. Якщо задане значення має неправильний тип, тоді генерується помилка: у PHP 5 це буде фатальна помилка, яку можна виправити, тоді як у PHP 7 виникне виняток TypeError .

Причина, по якій це важливо, полягає в тому, що воно дає людям, які збираються використовувати ваш код, зокрема тим, хто писатиме код на основі вашого коду, які типи параметрів прийматиме певний конструктор чи функція.

Але це не тільки це, тому що підказки типу також застосовуються до типу даних, які може повертати функція.

Типи повернення з можливістю нульового значення

Для початку припустімо, що у вас є функція, яка має повертати якийсь об’єкт. У цьому прикладі припустімо, що у нас є Postа пост представлено моделлю. Природно, модель буде типу post, тому підпис класу виглядатиме приблизно так :

<?php

namespace Acme;

class Post {
  // Attributes, Constructor, and Functions here.
}

Тепер припустімо, що у вас є вторинний клас, який повертатиме екземпляр повідомлення. Під час використання підказки типу для функції підпис виглядатиме приблизно так:

<?php

namespace Acme;

class PostManager {

  private $post;

  // Constructor and other Functions here.

  public function getPost(): Post
  {
    return $this->post;
  }

}

Справа в тому, що метод може повернути повідомлення або він може повернути null, якщо модель ніколи не була створена, передана в даний клас або просто не існує з якоїсь причини, тоді нам потрібно це враховувати.

Приклад: якщо ви досить довго працювали з WordPress, то знаєте, що функції можуть повертати кілька речей (наприклад, екземпляр WP_Errorабо масив). Але в найчистішому об’єктно-орієнтованому випадку, про який я говорю вище, ми розглядаємо функцію, яка може повертати nullабо повертати екземпляр Post.

І щоб вказати це, ви можете налаштувати метод таким чином:

<?php

namespace Acme;

class PostManager {

  private $post;

  // Constructor and other Functions here.

  public function getPost(): ?Post
  {
    if ($this->post === null) {
      return null;
    }

    return $this->post;
  }
}

Коротше кажучи, додайте простий знак питання перед типом об’єкта: «Цей метод може повертати значення null або екземпляр Post

Або, точніше, з посібника PHP:

Оголошення типів для параметрів і значень, що повертаються, тепер можна позначати як нульові, додавши перед назвою типу знак питання. Це означає, що, окрім зазначеного типу, NULLможна передати як аргумент або повернути як значення відповідно.

Отже, так, це трохи довгий пост, щоб пояснити пряму концепцію. Але я вважаю, що використання конкретних прикладів часто є більш корисним, ніж просто говорити про це абстрактно.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі