✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Использование типов возвращаемых значений Nullable в PHP

61

«Одна из самых приятных функций, которые предоставляет PHP, — это подсказки типов, специально предназначенные для тех, кто имеет опыт объектно-ориентированного программирования.

Из руководства по PHP :

Объявления типов позволяют функциям требовать, чтобы параметры имели определенный тип во время вызова. Если данное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 это будет исправимая фатальная ошибка, тогда как PHP 7 выдаст исключение TypeError.

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

Но это еще не все, потому что подсказки типа также применимы к типу данных, которые может возвращать функция.

Типы возвращаемых значений, допускающие значение NULL

Для начала предположим, что у вас есть функция, которая должна возвращать какой-то объект. В этом примере допустим, что у нас есть 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, добавив к имени типа префикс вопросительного знака. Это означает, что, как и указанный тип, NULLон может быть передан как аргумент или возвращен как значение соответственно.

Итак, да, это довольно длинный пост, чтобы объяснить простую концепцию. Но я считаю, что использование конкретных примеров часто бывает полезнее, чем просто говорить об этом абстрактно.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее