Типизации возвращение в PHP 7. Какие преимущества?


Я давал протестировано на PHP 7, и я заметил, что даже сейчас позволяет установить, какой тип данных будет возвращен.

Вот некоторые тесты:

, Установив экземпляр, который должен быть возвращен

function test_object(): stdClass {

    return new ArrayObject;
}

Fatal error: Uncaught TypeError: Return value of test_object() must be an instance of stdClass, instance of ArrayObject returned

, Установив, что возврат должен быть типа float

function test_type(): float
{
    return 1; // Nesse caso, retorna float(1)
}

function test_type(): int
{
    return 1;// Nesse caso retorna int(1)
}

function test_type(): string
{
    return 1 + 1; // Nesse caso retorna string(2)
}

function test_type(): string {

    return array(1, 2, 3); // Fatal error
}

Роковой error: Uncaught TypeError: Return value of test_type() must be of the type string, array returned

Некоторые люди могут даже иметь точки зрения, положительные в этом отношении, но я не могу дать opniões, потому что я родом из PHP 5 и не знаю, эти практики.

Каковы преимущества использования определения возвращаемого типа (типов возвращаемого значения)?

Как это поможет разработчику PHP?

Author: Wallace Maxters, 2015-10-21

4 answers

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

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

Нет, это ошибка будет только заметил, когда это использовать, не так.

Очевидно, что если весь код будет написан таким образом, можно избежать использования функции в местах, где ожидается другого типа.

Ясно, что также помогает документировать лучшие намерения. В том числе помогает, если кто-то вносит техническое обслуживание и менять, или создавать альтернативный путь выполнения, который управляет обратного типа, который отличается от ожидаемого. Раньше это могли оставаться незамеченными.

Жаль, что не является обязательным, так что PHP по-прежнему является языком, который программист должен беспокоиться о возвращении в большинстве случаев (это немного улучшилась в более новых версий). В других-он никогда не нужно беспокоиться о том, потому что документация уже гарантия, что вернется только один тип.

Усиления все еще не то, что может быть, если бы все типизированные, но это выигрыш.

 22
Author: Maniero, 2019-10-23 16:55:40

Каковы преимущества использования определения возвращаемого типа (типов возвращаемого значения)?

Одни и Те же на любом языке с дисциплины виды: системы безопасности и сплоченности и данных.

В языках с tipagens динамические, в зависимости от того, что возвращается, необходимо проверить, если возврат находится в пределах ожидаемого, потому что может быть что-то совершенно непредвиденное, в зависимости от того, что система будет сделано.

Как это поможет разработчик PHP?

Поможет избежать возвращения нежелательных и непредвиденных функций. PHP перестает быть языком, функция которого возвращает "что-нибудь", чтобы вернуть что-то определено, что обеспечивает удобство для программиста, что не нужно беспокоиться о проверке структуры данных, возвращаемых.

 15
Author: Leonel Sanches da Silva, 2015-10-21 15:45:45

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

В Настоящее время на PHP5, что может произойти, - это передать тип, который отличается от ожидаемого, и ждать, сбой произойдет. Что позволяет избежать таких немного-это вывод типа в высказываниях и методы/функции.

 11
Author: rray, 2015-10-21 16:15:42

Типирования будет плюс гарантия того, тип возврата и хорошую практику программирования. Я считаю, что основной причиной является сознательное использование ресурсов памяти. Программист PHP не понимает различие в распределении памяти для переменной типа String для типа integer и по этой причине он считает необходимым. Оборудование имеет ограниченные ресурсы, поэтому очень важно знать, какой тип переменной является более подходящим в конкретной процедуры, потому что это влияет и очень в производительность системы.

 0
Author: Mantega, 2018-07-19 20:39:11