Типизация в PHP

Доброе время суток участники образовательной IT площадки GeekSpace. Меня зовут Юрий Сиротенко и в данном конспекте мы поговорим о типах данных в языке программирования PHP

Если вы хотите ознакомиться с данным материалом в видео формате, вы можете найти запись в лектории или просто перейти по ссылке. Также вы сможете получить методичку и перезентацию на данную тему под видео - лекцией.

В рамках конспекта “переменные в PHP”, я приводил аналогию определения типа данных на примере деревянной бейсбольной биты. Я говорил, что дерево из которого состоит бейсбольная бита может отдаленно напоминать тип данных. Давайте остановимся на этом более подробно

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

Предположим у нас есть некоторая переменная в которой лежит значение. Первый вопрос который может возникнуть - “Какое значение?”. Что на самом деле лежит в переменной? Дело в том, что в переменной может лежать все, что угодно, например число, строка или вообще “ничего”.

Тип данных - это множество допустимых значений, которые могут принимать эти самые данные.

Например если в переменной лежит число, то это самое число может быть целочисленным - это тип integer или дробным - это тип float. В переменной может лежать некоторое множество, например массив или объект и т.д.

Тип данных определяет возможные значения, смысл, а также не менее важно, тип определяет допустимые операции над значениями. Это значит, что если мы определили тип значения переменной как “целочисленный”, это означает, что мы можем значения этого типа складывать, умножать, делить и т.д.

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

Все языки программирования делятся на две классификации. Существует статическая и динамическая типизация и сильная и слабая. Это можно представить в виде таблицы

Динамическая и статическая типизация

PHP относится к разряду языков с слабой динамической типизацией. Что это значит?

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

Динамическая типизация - прием, широко используемый в языках программирования и языках спецификации, при котором переменная связывается с типом в момент выполнения программы, иначе говоря в рантайме.

Давайте я приведу пример динамической и статической типизации, чтобы стало немного понятнее.

В Java привязка типа данных происходит в момент объявления переменной и фактическая привязка типа к значению осуществляется в момент компиляции программы

int x = 1;

В PHP тип данных определяется по присвоенному значению автоматически в момент выполнения программы

$x = 1;

Сильная и слабая типизация

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

Давайте я приведу примеры языков с разной типизацией для закрепления данного материала

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

К языку программирования с динамической сильной типизацией относится Python. Его относят к сильно типизированным (strongly) языкам потому что отсутствует автоматическое неявное преобразование типов.

К языку со слабой статической типизацией относят "C++", потому что хоть и привязка типов происходит в момент компиляции, преобразование типов имеет место быть

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

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

Информация

Автор конспекта


Дата создания: 06.02.2019
Категория: PHP