169
правок
AE (обсуждение | вклад) (→Приведение типов: Доработка таблицы) |
AE (обсуждение | вклад) Нет описания правки Метка: визуальный редактор отключён |
||
(не показано 12 промежуточных версий этого же участника) | |||
Строка 47: | Строка 47: | ||
!Описание | !Описание | ||
!Примеры | !Примеры | ||
!Приведение к | |||
!Проверка на | |||
|- | |- | ||
|bool | |bool | ||
Строка 52: | Строка 54: | ||
|булевый тип | |булевый тип | ||
|true, false | |true, false | ||
|(bool) $v | |||
|is_bool($v) | |||
|- | |- | ||
|int | |int | ||
Строка 57: | Строка 61: | ||
|целые числа | |целые числа | ||
|15, 017, 0xf, 0b1111 | |15, 017, 0xf, 0b1111 | ||
|(int) $v | |||
|is_int($v) | |||
|- | |- | ||
|float | |float | ||
Строка 62: | Строка 68: | ||
|числа с плав. точкой | |числа с плав. точкой | ||
|0.01, 1e-2 | |0.01, 1e-2 | ||
|(float) $v | |||
|is_float($v) | |||
|- | |- | ||
|string | |string | ||
Строка 67: | Строка 75: | ||
|строки | |строки | ||
|'abc', "abc" | |'abc', "abc" | ||
|(string) $v | |||
|is_string($v) | |||
|- | |- | ||
|array | |array | ||
Строка 73: | Строка 83: | ||
|[1,-0.1,'abc'], | |[1,-0.1,'abc'], | ||
array('key' => 'value') | array('key' => 'value') | ||
|(array) $v | |||
|is_array($v) | |||
|- | |- | ||
|object | |object | ||
Строка 79: | Строка 91: | ||
|new stdClass(), | |new stdClass(), | ||
new class {} | new class {} | ||
|(object) $v | |||
|is_object($v) | |||
|- | |- | ||
|callable | |callable | ||
Строка 85: | Строка 99: | ||
|function(){}, | |function(){}, | ||
fn($x) => $x+1 | fn($x) => $x+1 | ||
| - | |||
|is_callable($v) | |||
|- | |- | ||
|iterable | |iterable | ||
Строка 91: | Строка 107: | ||
|[1,2], | |[1,2], | ||
(function() { yield 1; yield 2; })() | (function() { yield 1; yield 2; })() | ||
| - | |||
|is_iterable($v) | |||
|- | |- | ||
|resource | |resource | ||
Строка 96: | Строка 114: | ||
|внешний ресурс | |внешний ресурс | ||
|fopen('<nowiki>http://www.google.com'</nowiki>, 'r') | |fopen('<nowiki>http://www.google.com'</nowiki>, 'r') | ||
| - | |||
|is_resource($v) | |||
|- | |- | ||
|NULL | |NULL | ||
Строка 101: | Строка 121: | ||
|нет значения | |нет значения | ||
|null | |null | ||
| - | |||
|is_null($v) | |||
|} | |||
== Типы ошибок == | |||
{| class="wikitable" | |||
|Значение | |||
|Константа | |||
|Выполнение | |||
прерывается | |||
|Описание | |||
|- | |||
|1 | |||
|'''<code>E_ERROR</code>''' | |||
|style="background-color: #ff6666"|Да | |||
|Фатальные неустранимые ошибки во время выполнения. | |||
|- | |||
|2 | |||
|'''<code>E_WARNING</code>''' | |||
|style="background-color: #ffff66"|Нет | |||
|Не фатальные предупреждения во время выполнения. | |||
|- | |||
|4 | |||
|'''<code>E_PARSE</code>''' | |||
|style="background-color: #ff6666"|Да | |||
|Ошибки на этапе компиляции. Невозможность обработать исходный код. | |||
|- | |||
|8 | |||
|'''<code>E_NOTICE</code>''' | |||
|Нет | |||
|Уведомление с указанием на возможную ошибку. | |||
|- | |||
|16 | |||
|'''<code>E_CORE_ERROR</code>''' | |||
|style="background-color: #ff6666"|Да | |||
|Фатальные ошибки ядра PHP. | |||
|- | |||
|32 | |||
|'''<code>E_CORE_WARNING</code>''' | |||
|style="background-color: #ffff66"|Нет | |||
|Предупреждения ядра PHP. | |||
|- | |||
|64 | |||
|'''<code>E_COMPILE_ERROR</code>''' | |||
|style="background-color: #ff6666"|Да | |||
|Фатальные ошибки на этапе компиляции от движка Zend. | |||
|- | |||
|128 | |||
|'''<code>E_COMPILE_WARNING</code>''' | |||
|style="background-color: #ffff66"|Нет | |||
|Предупреждения на этапе компиляции от движка Zend. | |||
|- | |||
|256 | |||
|'''<code>E_USER_ERROR</code>''' | |||
|style="background-color: #ff6666"|Да | |||
|Фатальные ошибки, вызванные пользователем через trigger_error(). | |||
|- | |||
|512 | |||
|'''<code>E_USER_WARNING</code>''' | |||
|style="background-color: #ffff66"|Нет | |||
|Предупреждения, вызванные пользователем через trigger_error(). | |||
|- | |||
|1024 | |||
|'''<code>E_USER_NOTICE</code>''' | |||
|Нет | |||
|Уведомления, вызванные пользователем через trigger_error(). | |||
|- | |||
|2048 | |||
|'''<code>E_STRICT</code>''' | |||
|Нет | |||
|Предложения для лучшей совместимости с новыми версиями PHP | |||
|- | |||
|4096 | |||
|'''<code>E_RECOVERABLE_ERROR</code>''' | |||
|style="background-color: #ff6666"|Да | |||
|Фатальные ошибки с возможностью обработки с помощью set_error_handler(). | |||
|- | |||
|8192 | |||
|'''<code>E_DEPRECATED</code>''' | |||
|Нет | |||
|Уведомления о коде, который не будет работать в следующих версиях PHP. | |||
|- | |||
|16384 | |||
|'''<code>E_USER_DEPRECATED</code>''' | |||
|Нет | |||
|Уведомления о устаревшем функционале, вызванные пользователем через trigger_error() | |||
|- | |||
|32767 | |||
|'''<code>E_ALL</code>''' | |||
| - | |||
|Все типы ошибок, предупреждений и уведомлений. | |||
|} | |} | ||
Полезный калькулятор ошибок https://maximivanov.github.io/php-error-reporting-calculator/ | |||
== Приведение типов == | == Приведение типов == | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ Примеры приведения типов | |+ Примеры приведения типов в PHP 8+ | ||
! $v = ... | ! $v = ... | ||
!Тип | |||
! gettype($v) | ! gettype($v) | ||
! (bool)$v | ! (bool)$v | ||
Строка 116: | Строка 229: | ||
|- | |- | ||
! null | ! null | ||
| | |NULL | ||
| "NULL" | |||
| | | false | ||
| int(0) | | int(0) | ||
Строка 124: | Строка 238: | ||
| float(0) | | float(0) | ||
| | | <code>""</code> | ||
| [] | | '''[ ]''' | ||
| {} | | '''{ }**''' | ||
|- | |- | ||
! true | ! true | ||
| | |bool | ||
| '''"boolean"''' | |||
| | | true | ||
| int(1) | | int(1) | ||
Строка 138: | Строка 253: | ||
| float(1) | | float(1) | ||
| | | "1" | ||
| [true] | | [0=>true] | ||
| {"scalar":true} | | {"scalar":true}** | ||
|- | |- | ||
! false | ! false | ||
| | |bool | ||
| '''"boolean"''' | |||
| | | false | ||
| int(0) | | int(0) | ||
Строка 152: | Строка 268: | ||
| float(0) | | float(0) | ||
| | | <code>""</code> | ||
| [false] | | [0=>false] | ||
| {"scalar":false} | | {"scalar":false}** | ||
|- | |- | ||
! 0 | ! 0 | ||
| | |int | ||
| '''"integer"''' | |||
| | | false | ||
| int(0) | | int(0) | ||
Строка 166: | Строка 283: | ||
| float(0) | | float(0) | ||
| | | "0" | ||
| [0] | | [0=>0] | ||
| {"scalar":0} | | {"scalar":0}** | ||
|- | |- | ||
! 1 | ! 1 | ||
| | |int | ||
| '''"integer"''' | |||
| | | true | ||
| int(1) | | int(1) | ||
Строка 180: | Строка 298: | ||
| float(1) | | float(1) | ||
| | | "1" | ||
| [1] | | [0=>1] | ||
| {"scalar":1} | | {"scalar":1}** | ||
|- | |- | ||
! 1. | ! 1.99 | ||
| | |float | ||
| '''"double"''' | |||
| | | true | ||
| int(1) | | '''int(1)***''' | ||
| float(1) | | float(1.99) | ||
| | | "1.99" | ||
| [1] | | [0=>1.99] | ||
| {"scalar":1} | | {"scalar":1.99}** | ||
|- | |- | ||
! M_PI | ! M_PI | ||
| | |float | ||
| '''"double"''' | |||
| | | true | ||
| int(3) | | int(3) | ||
| float(3. | | float(3.1...) | ||
| | | "3.14159..." | ||
| [3. | | [0=>3.14159...] | ||
| {"scalar":3. | | {"scalar":3.141...}** | ||
|- | |- | ||
! INF | ! INF | ||
| | |float | ||
| '''"double"''' | |||
| | | true | ||
| int(0) | | '''int(0)''' | ||
| float(INF) | | float(INF) | ||
| | | '''"INF"''' | ||
| | | [0=>INF] | ||
| | | {"scalar":INF}** | ||
} | |||
|- | |- | ||
! NAN | ! NAN | ||
| | |float | ||
| '''"double"''' | |||
| | | '''true''' | ||
| int(0) | | '''int(0)''' | ||
| float(NAN) | | float(NAN) | ||
| | | '''"NAN"''' | ||
| | | [0=>NAN] | ||
| | | {"scalar":NAN}** | ||
} | |||
|- | |- | ||
! "" | ! "" | ||
| string | |string | ||
| "string" | |||
| | | false | ||
| int(0) | | int(0) | ||
Строка 266: | Строка 377: | ||
| float(0) | | float(0) | ||
| | | <code>""</code> | ||
| [""] | | [0=><code>""</code>] | ||
| {"scalar":""} | | {"scalar":<code>""</code>}** | ||
|- | |- | ||
! "0" | ! "0" | ||
| string | |string | ||
| "string" | |||
| | | '''false''' | ||
| int(0) | | int(0) | ||
Строка 280: | Строка 392: | ||
| float(0) | | float(0) | ||
| | | "0" | ||
| ["0"] | | [0=>"0"] | ||
| {"scalar":"0"} | | {"scalar":"0"}** | ||
|- | |- | ||
! "1" | ! "1" | ||
| string | |string | ||
| "string" | |||
| | | true | ||
| int(1) | | int(1) | ||
Строка 294: | Строка 407: | ||
| float(1) | | float(1) | ||
| | | "1" | ||
| ["1"] | | [0=>"1"] | ||
| {"scalar":"1"} | | {"scalar":"1"}** | ||
|- | |- | ||
! "true" | ! "true" | ||
| string | |string | ||
| "string" | |||
| | | true | ||
| int(0) | | '''int(0)''' | ||
| float(0) | | float(0) | ||
| | | "true" | ||
| ["true"] | | [0=>"true"] | ||
| {"scalar":"true"} | | {"scalar":"true"}** | ||
|- | |- | ||
! "false" | ! "false" | ||
| string | |string | ||
| "string" | |||
| | | '''true''' | ||
| int(0) | | int(0) | ||
Строка 322: | Строка 437: | ||
| float(0) | | float(0) | ||
| | | "false" | ||
| ["false"] | | [0=>"false"] | ||
| {"scalar":"false"} | | {"scalar":"false"}** | ||
|- | |- | ||
! | ! [ ] | ||
| | |array | ||
| "array" | |||
| | | '''false''' | ||
| int(0) | | '''int(0)''' | ||
| float(0) | | float(0) | ||
| | | style="background-color: #ffff66" | '''"Array" *''' | ||
| [ ] | |||
| [ | | { }** | ||
| { | |||
|- | |- | ||
! [] | ! [1,2] | ||
| | |array | ||
| "array" | |||
| | | true | ||
| int(1) | | int(1) | ||
Строка 363: | Строка 466: | ||
| float(1) | | float(1) | ||
| style="background-color: #ffff66"| | | style="background-color: #ffff66" | '''"Array" *''' | ||
| [0] | | [0=>1,1=>2] | ||
| {"0": | | {'''"0"''':1,'''"1"''':2}** | ||
|- | |- | ||
! [" | ! ["3"=>"a","B",4=>"c"] | ||
| | |array | ||
| "array" | |||
| | | true | ||
| int(1) | | int(1) | ||
Строка 376: | Строка 480: | ||
| float(1) | | float(1) | ||
| style="background-color: #ffff66"| | | style="background-color: #ffff66" | '''"Array" *''' | ||
| [" | | '''[3=>"a",4=>"c"]''' | ||
| {" | | {'''"3"''':"a",'''"4"''':"c"}** | ||
|- | |- | ||
! ["a"=>"b"] | ! ["a"=>"b","b"] | ||
| | |array | ||
| "array" | |||
| | | true | ||
| int(1) | | int(1) | ||
Строка 389: | Строка 494: | ||
| float(1) | | float(1) | ||
| style="background-color: #ffff66"| | | style="background-color: #ffff66" | '''"Array" *''' | ||
| | | ["a"=>"b",'''0=>'''"b"] | ||
| {"a":"b"} | | {"a":"b",'''"0"''':"b"}** | ||
|- | |- | ||
! [["a"=>"b"]] | ! [["a"=>"b"]] | ||
| | |array | ||
| "array" | |||
| | | true | ||
| int(1) | | int(1) | ||
Строка 402: | Строка 508: | ||
| float(1) | | float(1) | ||
| style="background-color: #ffff66"| | | style="background-color: #ffff66" | '''"Array" *''' | ||
| [ | | [["a"=>"b]] | ||
| {"0": | | {"0":'''["a"=>"b"]'''}** | ||
|- | |- | ||
! new stdClass() | ! new stdClass() | ||
| | |object | ||
| "object" | |||
| | | '''true''' | ||
| style="background-color: #ffff66"| int(1) | | style="background-color: #ffff66" | '''int(1)*''' | ||
| style="background-color: #ffff66"| float(1) | | style="background-color: #ffff66" | float(1)* | ||
| | | style="background-color: #ff6666" | '''Fatal error''' | ||
| [] | | [ ] | ||
| {} | | { }** | ||
|- | |- | ||
! | ! <small>Object с методом __toString</small> | ||
| | |object | ||
| "object" | |||
| | | true | ||
| style="background-color: #ffff66"| int(1) | | style="background-color: #ffff66" | int(1)* | ||
| style="background-color: #ffff66"| float(1) | | style="background-color: #ffff66" | float(1)* | ||
| | | "''<small>из __toString</small>''" | ||
| [] | | [<small>''поля из объекта''</small>] | ||
| | | ''object(SomeClass)'' | ||
|- | |||
!fn($x) => $x+1 | |||
|callable | |||
|'''"object"''' | |||
|true | |||
| style="background-color: #ffff66" | int(1)* | |||
| style="background-color: #ffff66" | float(1)* | |||
| style="background-color: #ff6666" | '''Fatal error''' | |||
|[''<small>object(Closure)</small>''] | |||
|''object(Closure)'' | |||
|- | |- | ||
! (function() { yield | ! <small>(function() { yield ...; })()</small> | ||
| | |iterable | ||
| '''"object"''' | |||
| | | true | ||
| style="background-color: #ffff66"| int(1) | | style="background-color: #ffff66" | int(1)* | ||
| style="background-color: #ffff66"| float(1) | | style="background-color: #ffff66" | float(1)* | ||
| | | style="background-color: #ff6666" | '''Fatal error''' | ||
| [] | | [ ] | ||
| | | ''object(Generator)'' | ||
|- | |- | ||
! fopen(' | ! fopen('xxx', 'r') | ||
| | |resource | ||
| "resource" | |||
| | | true | ||
| int( | | '''int(?)''' | ||
| float( | | '''float(?)''' | ||
| | | "<small>Resource id #?</small>" | ||
| | | [<small>''resource…''</small>] | ||
| | | {"scalar":''<small>resource…</small>''} | ||
} | |||
|- | |- | ||
|colspan=" | ! <sub>Примечания:</sub> | ||
| colspan="2" | <sub>* E_WARNING</sub> | |||
| colspan="3" | <sub>** { } - обозначение для object(stdClass)</sub> | |||
| colspan="3" | <sub>*** округление в меньшую сторону</sub> | |||
|- | |- | ||
|} | |} | ||
До версии PHP < 7.3 при приведении массива к объекту ключи оставались цифрами: {0:1} вместо {"0":1}. До версии 8.0 типы ошибок были менее строгие. В остальном в старых версиях приведение работает аналогично. | |||
== Объявление типов для строгой типизации == | == Объявление типов для строгой типизации == | ||
Строка 1342: | Строка 1460: | ||
|- | |- | ||
|} | |} | ||
[[Категория:Шпаргалки]] |