Уроки простыми словами. Урок 2. Типы данных в PHP с примерами.
<?php
// var_dump($variable);
// В PHP используется динамическая типизация. Язык имеет несколько типов, которые будут рассмотрены ниже.
// 1) Встроенные типы
// 1.1) NULL
$variable = null; // NULL
// 1.2) Скалярные типы
// 1.2.1) Логические значения (bool, boolean)
$variable = true; // bool(true)
$variable = false; // bool(false)
// 1.2.2) Целые числа (int, integer - двоичные, восьмеричные и шестнадцатеричные числа)
$variable = 123; // int(123)
// 1.2.3) Числа с плавающей точкой (float)
$variable = 123.45; // float(123.45)
// 1.2.4) Строки (string)
$variable = 'text'; // string(4) "text"
$variable = "text"; // string(4) "text"
$variable = <<<END
heredoc
END; // string(10) " heredoc"
$variable = <<<'EOD'
nowdoc (без обработки переменных, спецсимволов и т.д.)
EOD; // string(94) " nowdoc (без обработки переменных, спецсимволов и т.д.)"
// 1.2.5) Числовые строки (int или float)
$variable = '123'; // string(3) "123"
$variable = '123.45'; // string(6) "123.45"
// 1.3) Массивы (array)
$variable = array(1, 2, array(),); // array(3) { [0]=> int(1) [1]=> int(2) [2]=> array(0) { } }
$variable = [1 => 'test', 2, [],]; // array(3) { [1]=> string(4) "test" [2]=> int(2) [3]=> array(0) { } }
// 1.4) Объекты (object)
class A {
public static function test() {
return 'test';
}
}
$variable = new A(); // object(A)#1 (0) { }
// 1.5) Перечисления
/* enum Suit {
case One;
case Two;
}
function test_enum(Suit $s) {
// ...
}
$variable = test_enum(Suit::One); */
// 1.6) Ресурсы (resource)
$variable = fopen(__DIR__.'/index.php', 'r'); // resource(3) of type (stream)
// 1.7) Mixed (object, resource, array, string, float, int, bool, null)
$variable = 'string'; // string(6) "string"
$variable = 123; // int(123)
// 1.8) Void
function test_void(): void {
// ...
}
// 1.9) Never
function test_never(): never {
exit();
}
// 1.10) Относительные типы классов: self, parent и static
$variable = new A(); // object(A)#1 (0) { }
// 2) Типы значений
// 2.1) true
// function get_always_returns_true(): true {}
// 2.2) false
// function get_always_returns_false(): false {}
// 3) Определяемые пользователем типы (класс-типы)
// 3.1) Интерфейсы (interface)
// 3.2) Классы (class)
// 3.3) Перечисления (enum)
// 4) Callable и callback-функции
function test() {
return 'test';
}
$variable = call_user_func('test'); // string(4) "test"
$variable = call_user_func(array('A', 'test')); // string(4) "test"
// 5) Итерируемые значения (iterable)
function test_iterable(iterable $iterable) {
foreach ($iterable as $value) {
// ...
}
}
//
$variable = 123;
var_dump($variable); // int(123)
$variable = (string)$variable;
var_dump($variable); // string(3) "123"
Текст видео:
Используем локальный хостинг для тестов (example) - открываем файл. Нужно сказать, что в языке PHP используется динамическая типизация. Рассмотрим примеры, пишем код, код мы будем для примера брать уже написанный, копировать и вставлять здесь. Итак первое - встроенные типы.
Первое, что сюда входит, это: напишем для примера переменную с любым названием и присвоить ей значение. Затем возьмём функцию var_dump и посмотрим, сохраним и посмотрим значение. Как видим вывелось значение NULL, переменное значение NULL присваивается либо таким способом, либо необъявленная переменная будет выдавать значение NULL, либо если переменную удалить при помощи функции unset. Далее по кусочку берём копируем.
Далее 1.2 - скалярные типы здесь. Содержится тоже несколько частей. Первое 1.2.1 - это логические значения. Также для примера написаны переменные, посмотрим их значения, как выводится при помощи функции. Пишем, сохраняем и обновляем. Видим bool(true), соответственно здесь bool(false). Далее, что ещё здесь нужно сказать было - эти значения необходимы, как правило, в тех участках кода, где нужно вычислить либо верное условие, либо ложное.
Также могут использоваться, например, 0 и 1. В качестве нуля будет false, единица будет true и так далее. Но лучше явно указывать там, где это требуется. Итак продолжим, 1.2.2 подпункт - целые числа, то есть int. Сюда входят двоичные, восьмеричные и шестнадцатеричные числа. Продолжаем, подпункт 1.2.3 - числа с плавающей точкой.
Float - тоже самое, берём функцию и смотрим. Как видим float и значение, продолжаем. Пункт 1.2.4 - здесь их можно записать по-разному. А что ещё нужно было сказать, в целых числах - здесь зависит максимально возможная длина от платформы. Возвращаемся к строкам, смотрим - можно в одинарных кавычках записать. Как видно здесь для примера, видим строка, длина текста. Здесь в двойных кавычках - тоже самое, только здесь будет уже в двойных.
В кавычках переменные вычисляются соответственно, если например, вот так сделать и сохранить - то видим система подставила значение и вычислила. Здесь такое не сработает - просто она так и будет написана. Обработка в одинарных кавычках быстрее производится, чем в двойных кавычках - происходит обработка переменных, спецсимволов и так далее. То есть перенос строки можно и прочее делать, символы. Продолжим, ещё можно строки указывать при помощи различных возможностей.
Как видим появляется переменная и просто строка выводится. А здесь тоже самое, то есть здесь различие то, что здесь используются кавычки разные перед первым специальным символом и здесь уже не будет обработки переменных, спецсимволов и так далее. А здесь будет - то есть переменные будут вычисляться, а здесь нет, не будет. Тип string - это так явно можно задать.
Тип строковый может быть ещё и в других частях при разработке кода. Продолжим, следующее пункт 1.2.5. Числовые строки int или float, то есть напишем для примера так - видна строка 123, то есть мы просто взяли в кавычки и как строку записали число, оно выводится как числовая строка. Можно использовать и для float-типа тоже самое.
Выходим из этого подпункта и у нас будут массивы. Их можно написать для примера, рассмотрим, то есть здесь используются примеры самые часто используемые. Возможно есть ещё и в других местах, где в коде PHP используются типы - всё рассмотреть невозможно. Поэтому самое простое - итак рассматриваем массив, либо при помощи такого, либо так можно сделать, либо в новых версиях можно квадратные скобки использовать. Записываем значение и выводим его содержимое, видим массив содержит значение.
Рассмотрим тоже самое, то есть мы видим используются сразу значения без ключей. Здесь в примере - ключ и значение, здесь просто значение без ключа, ключ вычислится автоматически и здесь значение просто. То есть, массивы могут быть одномерные, многомерные, вложенные и так далее. То есть, мы кратко забегаем наперёд. Даже рассматриваем некоторые особенности языка PHP.
Продолжим, после массивов у нас идёт пункт объекты (object). Для примера класс A, написан метод test. Итак рассматриваем таким способом, создаётся экземпляр класса - рассматриваем эту переменную полученную, видим объект получился у нас вот таким вот способом.
Перечисление работают в новых версиях PHP. Здесь мы рассматривать не будем, здесь на хостинге версия PHP используется, не поддерживающая перечисления. Это просто переменная будет вызывать функцию, например, которая будет принимать перечисление - вот мы обращаемся сюда, вот у нас перечисление. Мы обращаемся к первому перечислению и передаём его сюда для примера так. То есть, такой тип есть. Продолжим, следующий у нас будет 1,6 - ресурсы тип. Берём посмотрим - видим ресурс, тип поток, может быть открытый.
Следующий 1,7 - смешанный тип. Сюда может входить: объекты, ресурсы, массивы, строки, числа, числа с плавающей точкой. Тоже самое, строка, либо число для примера. То есть смешанный, либо тот, либо строка, либо число может приниматься и так далее. Используется в функциях - часто может быть.
Продолжим - 1,8. Для примера приведена функция, которая должна возвращать, возвращает то есть - это отсутствие значения, ничего не возвращается. Такой тип есть, тоже самое, только здесь уже означает - это функция, возвращает тип never. То есть, заканчивается выполнение и ничего также не возвращается никогда, это было введено в новых версиях PHP. То есть, отличаются они тем, что здесь просто не возвращается значение, а здесь не только не возвращается значение, но и гарантированно происходит выход.
Продолжим - 1,10. Относительные типы классов: self, parent и static. Для примера также берём переменную, экземпляр класса, который мы создали выше для примера. Как видим, здесь есть статичный метод test, то есть - это тоже типы. Надо иметь в виду это, продолжим, переходим к пункту 2. Выходим из этого подпункта, где мы это рассмотрели, то есть у встроенных типов вот столько подпунктов. Соответственно у скалярных было несколько подпунктов, также и сейчас мы добрались до 2 пункта - типы значений, то есть был 1 пункт. Скалярные типы - встроенные типы, теперь типы значений, например функция есть такая, которая всегда возвращает истину, тоже самое для 2, всегда возвращает вот так. То есть, есть функция, которая возвращает да либо нет и это надо явно задать, для этого используется.
Продолжим - 3. Определяемые пользователям типы (класс типы). 3.1 - пользователь сам пишет свои интерфейсы, классы, перечисления. Это будут типы - класс типы. Продолжаем, переходим к четвёртому пункту callable и callback-функции, для примера есть функция test и видим, пишем - то есть мы вызываем вот таким способом пользовательскую функцию test и выведем для примера на экран результат переменной. Видим, то есть вызвалась функция test и возвращается значение строки test, теперь так тоже самое - только мы можем у класса допустим вызвать, класса A. Вот мы сделали тоже самое - метод test, у него вызвали как видим. То есть, такой тип есть callable и callback-функции. Вот так он выглядит примерно, далее здесь будет получается callback-функция, по имени вызывается. Продолжим - 5 пункт добрались. Итерируемые значения iterable, есть функция test_iterable - принимает переменную и видим происходит при помощи цикла обход значений. То есть, содержатся здесь те значения, которые можно обойти. Более подробно мы это рассматривать не будем сейчас, ещё что в этом уроке посмотрим - например, закончили мы рассмотрение этих пунктов типов переменных. Как видим их пять получилось пунктов, с подпунктами даже, где-то были пояснения сделаны, возможно излишние. Для этого урока здесь строки, здесь массивы, устройство немного рассмотрели, но для примера подойдёт. Итак возвращаемся к этому, пишем переменную, допустим такую (int) - применяем var_dump.
Видим число, было как тут написано и тип далее. Делаем привидение при помощи привидения, делается в другой тип вот таким способом. Например, было int, мы сделали в string. Приводим, то есть пишутся скобки круглые и тип указывается int, и так далее. В данном случае string мы записали - это удалим и попробуем вывести. Видим тип string - как здесь написано в комментариях, то есть мы преобразовали из числового int в string, вот таким простым способом можно это делать. На этом урок завершён.
Latest articles
- 03.04.24IT / Уроки PHP Уроки простыми словами. Урок 3. Все операторы PHP с примерами, с выводом работы кода на экран.
- 02.04.24IT / Уроки PHP Уроки простыми словами. Урок 2. Типы данных в PHP с примерами.
- 02.04.24IT / Уроки PHP Уроки простыми словами. Урок 1. Коротко о языке веб-программирования PHP. Основы синтаксиса.
- 09.11.23IT / Database Errors when migrating from MySQL 5.6 to 5.7 and how to fix them - database dump import failed with an error or INSERT does not work. Disabling STRICT_TRANS_TABLES strict mode or using IGNORE
- 08.07.22IT / Misc Convert office files DOC, DOCX, DOCM, RTF to DOCX, DOCM, DOC, RTF, PDF, HTML, XML, TXT formats without loss and markup changes