PHP Шпаргалки: различия между версиями
(Типизация) |
(→Объявление типов для строгой типизации: Дополнения) |
||
Строка 127: | Строка 127: | ||
|7.0 | |7.0 | ||
|7.4 | |7.4 | ||
|Может использоваться только в классах | |Объект текущего класса. Может использоваться только в классах | ||
|- | |- | ||
|parent | |parent | ||
Строка 133: | Строка 133: | ||
|7.0 | |7.0 | ||
|7.4 | |7.4 | ||
|Может использоваться только в классах | |Объект родительского класса. Может использоваться только в классах | ||
|- | |- | ||
|array | |array | ||
Строка 170: | Строка 170: | ||
|7.4 | |7.4 | ||
| | | | ||
|- | |||
|?xxxxx | |||
|7.1 | |||
|7.1 | |||
|7.4 | |||
|Значение может быть xxxxx или <code>null</code> | |||
|- | |- | ||
|iterable | |iterable | ||
Строка 176: | Строка 182: | ||
|7.4 | |7.4 | ||
|Массив или объект, реализующий интерфейс <code>Traversable</code> | |Массив или объект, реализующий интерфейс <code>Traversable</code> | ||
|- | |||
|void | |||
| - | |||
|7.1 | |||
| - | |||
|Функция ничего не возвращает | |||
|- | |- | ||
|object | |object | ||
Строка 182: | Строка 194: | ||
|7.4 | |7.4 | ||
| | | | ||
|- | |||
|<code><nowiki>xx|yy|zz</nowiki></code> | |||
|8.0 | |||
|8.0 | |||
|8.0 | |||
|Объединение типов, должен подходить любой один из указанных | |||
|- | |||
|null | |||
| - | |||
| - | |||
| - | |||
|Добавлен в 8.0. Псевдотип, может использоваться только для объединений <code><nowiki>xx|yy|null</nowiki></code> | |||
|- | |||
|false | |||
| - | |||
| - | |||
| - | |||
|Добавлен в 8.0. Псевдотип, может использоваться только для объединений <code><nowiki>xx|yy|false</nowiki></code> | |||
|- | |- | ||
|mixed | |mixed | ||
Строка 187: | Строка 217: | ||
|8.0 | |8.0 | ||
|8.0 | |8.0 | ||
| | |То же самое, что <code><nowiki>object|resource|array|string|int|float|bool|null</nowiki></code> | ||
|- | |||
|static | |||
|8.0 | |||
|8.0 | |||
|8.0 | |||
|Объект текущий класса или любого дочернего | |||
|- | |||
|<code>xx&yy&zz</code> | |||
|8.1 | |||
|8.1 | |||
|8.1 | |||
|Пересечение типов, все должны подходить. Актуально для названия классов и интерфейсов. | |||
|- | |||
|never | |||
| - | |||
|8.1 | |||
| - | |||
|Функция может прервать выполнения программы | |||
|} | |} | ||
Примечание: не забудьте добавить в php файл <code>declare(strict_types=1);</code> , если вы используйте подход строгой типизации и не хотите чтобы значения '''неявно''' приводились к указанным вами типам. | |||
== Гибкое сравнение с помощью == == | == Гибкое сравнение с помощью == == |
Версия от 09:28, 25 октября 2022
Операторы
Арифметика | Сравнение | Логические | Побитовые |
---|---|---|---|
+ сложение
|
=== равно
|
&& (and ) и
|
& и
|
- вычитание
|
!== не равно
|
|| (or ) или
|
| или
|
* умножение
|
< меньше
|
! отрицание
|
~ отрицание
|
/ деление
|
> больше
|
xor искл. или
|
^ искл. или
|
% остаток
|
<= меньше или равно
|
<< сдвиг влево
| |
** степень
|
>= больше или равно
|
>> сдвиг вправо
|
Типы данных
Тип | Подтип | Описание | Примеры |
---|---|---|---|
bool | скалярный | булевый тип | true, false |
int | скалярный | целые числа | 15, 017, 0xf, 0b1111 |
float | скалярный | числа с плав. точкой | 0.01, 1e-2 |
string | скалярный | строки | 'abc', "abc" |
array | смешанный | массивы | [1,-0.1,'abc'],
array('key' => 'value') |
object | смешанный | объекты | new stdClass(),
new class {} |
callable | смешанный | можно в callback | function(){},
fn($x) => $x+1 |
iterable | смешанный | можно в foreach | [1,2],
(function() { yield 1; yield 2; })() |
resource | специальный | внешний ресурс | fopen('http://www.google.com', 'r') |
NULL | специальный | нет значения | null |
Объявление типов для строгой типизации
Объявление типов (Type declarations) поддерживается в параметрах функциях, возвращаемых функциями значениях и в свойствах (полях) классов.
Что указываем | В параметрах
функций |
В возвращаемых
значениях |
В свойствах
класса |
Особенности |
---|---|---|---|---|
Имя класса или
интерфейса |
5.0 | 7.0 | 7.4 | |
self | 5.0 | 7.0 | 7.4 | Объект текущего класса. Может использоваться только в классах |
parent | 5.0 | 7.0 | 7.4 | Объект родительского класса. Может использоваться только в классах |
array | 5.1 | 7.0 | 7.4 | |
callable | 5.4 | 7.0 | - | Нельзя использовать для свойств класса |
bool | 7.0 | 7.0 | 7.4 | |
float | 7.0 | 7.0 | 7.4 | |
int | 7.0 | 7.0 | 7.4 | |
string | 7.0 | 7.0 | 7.4 | |
?xxxxx | 7.1 | 7.1 | 7.4 | Значение может быть xxxxx или null
|
iterable | 7.1 | 7.1 | 7.4 | Массив или объект, реализующий интерфейс Traversable
|
void | - | 7.1 | - | Функция ничего не возвращает |
object | 7.2 | 7.2 | 7.4 | |
xx|yy|zz
|
8.0 | 8.0 | 8.0 | Объединение типов, должен подходить любой один из указанных |
null | - | - | - | Добавлен в 8.0. Псевдотип, может использоваться только для объединений xx|yy|null
|
false | - | - | - | Добавлен в 8.0. Псевдотип, может использоваться только для объединений xx|yy|false
|
mixed | 8.0 | 8.0 | 8.0 | То же самое, что object|resource|array|string|int|float|bool|null
|
static | 8.0 | 8.0 | 8.0 | Объект текущий класса или любого дочернего |
xx&yy&zz
|
8.1 | 8.1 | 8.1 | Пересечение типов, все должны подходить. Актуально для названия классов и интерфейсов. |
never | - | 8.1 | - | Функция может прервать выполнения программы |
Примечание: не забудьте добавить в php файл declare(strict_types=1);
, если вы используйте подход строгой типизации и не хотите чтобы значения неявно приводились к указанным вами типам.
Гибкое сравнение с помощью ==
== | true | 1 | '1' | '1.0' | '1e0' | '1.0a' | -1 | [0] | NAN | 'abc' | '0a' | '0' | [] | "" | null | 0 | false |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
true | true | true | true | true | true | true | true | true | true | true | true | false | false | false | false | false | false |
1 | true | true | true | true | true | false* | false | false | false | false | false | false | false | false | false | false | false |
'1' | true | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false |
'1.0' | true | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false |
'1e0' | true | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false |
'1.0a' | true | false* | false | false | false | true | false | false | false | false | false | false | false | false | false | false | false |
-1 | true | false | false | false | false | false | true | false | false | false | false | false | false | false | false | false | false |
[0] | true | false | false | false | false | false | false | true | false | false | false | false | false | false | false | false | false |
NAN | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
'abc' | true | false | false | false | false | false | false | false | false | true | false | false | false | false | false | false* | false |
'0a' | true | false | false | false | false | false | false | false | false | false | true | false | false | false | false | false* | false |
'0' | false | false | false | false | false | false | false | false | false | false | false | true | false | false | false | true | true |
[] | false | false | false | false | false | false | false | false | false | false | false | false | true | false | true | false | true |
"" | false | false | false | false | false | false | false | false | false | false | false | false | false | true | true | false* | true |
null | false | false | false | false | false | false | false | false | false | false | false | false | true | true | true | true | true |
0 | false | false | false | false | false | false | false | false | false | false* | false* | true | false | false* | true | true | true |
false | false | false | false | false | false | false | false | false | false | false | false | true | true | true | true | true | true |
* true до PHP 8.0.0. |
Тождественное сравнение с помощью ===
=== | 15 | 017 | 0xf | 0b1111 | 1.0 | 1e0 | 1.0001 | 1.0…01 | NAN | INF | 1.8e308 | 1.8e307 | "n" | 'n' | '\n' | "\n" | array(1) | [1] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
15 | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
017 | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
0xf | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
0b1111 | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
1.0 | false | false | false | false | true | true | false | true | false | false | false | false | false | false | false | false | false | false |
1e0 | false | false | false | false | true | true | false | true | false | false | false | false | false | false | false | false | false | false |
1.0001 | false | false | false | false | false | false | true | false | false | false | false | false | false | false | false | false | false | false |
1.0…01 | false | false | false | false | true | true | false | true | false | false | false | false | false | false | false | false | false | false |
NAN | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
INF | false | false | false | false | false | false | false | false | false | true | true | false | false | false | false | false | false | false |
1.8e308 | false | false | false | false | false | false | false | false | false | true | true | false | false | false | false | false | false | false |
1.8e307 | false | false | false | false | false | false | false | false | false | false | false | true | false | false | false | false | false | false |
"n" | false | false | false | false | false | false | false | false | false | false | false | false | true | true | false | false | false | false |
'n' | false | false | false | false | false | false | false | false | false | false | false | false | true | true | false | false | false | false |
'\n' | false | false | false | false | false | false | false | false | false | false | false | false | false | false | true | false | false | false |
"\n" | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | true | false | false |
array(1) | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | true | true |
[1] | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | true | true |