Для тех, кто только начинает эту серию, обратите внимание, что мы рассматриваем объектно-ориентированное программирование с использованием PHP в контексте WordPress.
Целевая аудитория
Мы делаем это с точки зрения самого новичка, поэтому, если вы опытный разработчик или знакомы со многими аспектами объектно-ориентированного программирования, то эта серия, вероятно, не для вас.
С учетом вышесказанного, если вы заинтересованы в изучении объектно-ориентированного программирования на PHP и считаете себя новичком, мы продолжим серию этой статьи, рассказав о некоторых типах данных, предлагаемых PHP.
Но сначала убедитесь, что вы ознакомились с предыдущими статьями этой серии, поскольку каждая из них основана на другой:
Как только вы все пойманы, мы можем начать говорить о типах.
Какие есть типы?
Мы закончили последнюю статью следующим:
Мы вернемся к этому, но сначала нам нужно обсудить некоторые из более примитивных аспектов программирования, таких как строки, массивы, циклы и условные выражения.
Теперь строки, массивы и т. Д. — это то, что мы считаем типами. Циклы и условные выражения — это так называемые управляющие структуры, о которых мы расскажем в следующей статье.
Итак, давайте подойдем к простому термину, обозначающему тип данных, чтобы мы знали, как концептуально смоделировать их, продвигаясь не только в этой статье, но и в остальной части серии.
Для любого, кто написал любой код, который включает переменные, вы, вероятно, выглядели примерно так:
$name = 'Tuts+ WordPress';
-
$is_active = true;
-
$age = 42;
- …и так далее.
В самой простой форме вы, вероятно, услышите приведенный выше код, определенный как переменные с определениями, и это правильно, но это очень обобщенное определение.
Видите ли, всякий раз, когда вы определяете переменную в PHP, вы делаете это с помощью префикса переменной $
. Это позволяет PHP знать, что вы определяете переменную и что она будет представлять типичное значение.
Достаточно просто, правда?
Дело в том, что в PHP есть разные типы . Для тех, кто прибывает из так называемых «строго типизированных языков», мы поговорим об этом более кратко, но знаем, что PHP предлагает следующие типы данных:
- булевы
- целые
- числа с плавающей точкой
- строки
- массивы
- объекты
- …и более
Все, от логических значений до строк, можно рассматривать как простой тип данных, где в качестве массивов и объектов можно рассматривать более сложные типы данных.
Простые типы данных
Простые типы данных определены как таковые, потому что данные, которые они представляют, просты . То есть, как правило, он попадает под знамя истинного, ложного, десятичного разделителя, а также слов и / или предложений.
Чтобы привести конкретные примеры каждого из вышеперечисленных:
- Логические значения предназначены для хранения значений
true
илиfalse
. - Целые числа относятся к любым целым числам. То есть он не содержит дробных или десятичных компонентов. Это включает числа, такие как
-12
,-2
,1
,100
,5000
и так далее. - Числа с плавающей точкой являются своего рода противоположностью целых чисел в том смысле, что они представляют значения с дробными частями. Так, например, вы можете увидеть
3.1459
,2.5
,100.25
и так далее. Если бы вы попытались сохранить значение, скажем,3/4
вы бы на самом деле сохранили.75
если вы не сохранили его как строку. То есть вы должны были сохранить'3/4'
. Обратите внимание на тонкую границу между двумя? У одного есть кавычки, а у другого нет. - Говоря о строках, строки представляют собой любое отдельное слово или набор буквенно-цифровых символов, которые составляют последовательность букв и цифр. Это может быть одно слово, это может быть предложение, это могут быть предложения, и это может быть случайная последовательность символов, такая как зашифрованная строка. Примеры строк включают
'phrases like this'
или одно'word'
или даже что-то более сложное, например'e952098vjdkw94kd'
.
Однако здесь есть одна загвоздка: любой из перечисленных выше типов данных можно преобразовать в строки, заключив их в кавычки.
Но есть улов
Например, если вы работали с логическим значением, скажем, true, но вы должны были сохранить его в переменной, подобной этой: $is_active = 'true';
тогда вы на самом деле только что создали строку, которая читает true
.
Точно так же, если бы вы написали строку, которая читала бы $age = '42';
Затем вы создали строку, содержащую число 42
, а не целое число.
Есть смысл?
Причина, по которой это имеет значение, заключается в том, что когда приходит время работать со структурами управления — о чем мы расскажем в следующей статье, — то, что иногда выполнение сравнения может иметь непреднамеренные последствия, если вы не уверены, с каким типом данных вы работаете. работает.
Сложные типы данных
В дополнение к простым типам данных у нас также есть сложные типы данных, которые, на мой взгляд, не так уж и сложны. На самом деле, я думаю, что это причудливый способ сказать, что у нас есть способы хранения несколько частей информации в одну переменную; тогда как с простыми типами у нас есть способ хранить отдельные фрагменты информации в одной переменной.
Довольно легко запомнить, верно? Так, каковы некоторые из более сложных типов данных?
Два основных сложных типа данных, на которых мы собираемся сосредоточиться в этой серии как массивы и объекты. Есть и другие, но они выходят за рамки этой серии, так что если вы заинтересованы, то не стесняйтесь взглянуть на руководство по PHP , но я предупреждаю вас: если вы абсолютный новичок, контент может чувствовать немного подавляющим
- Массивы — это способы хранения нескольких частей информации в коллекции. Подумайте на мгновение, что у вас есть набор имен, которые вы хотите сохранить в коллекции, которая называется $ names. В PHP вы определяете массив и присваиваете его переменной следующим образом:
$names = [ 'John', 'Paul', 'Ringo', 'George' ];
Обратите внимание, что у нас есть массив строк, но другой аспект массивов PHP заключается в том, что они могут содержать несколько типов данных. Это означает, что вы можете иметь массив, который выглядит как$various_types = [ 42, TRUE, 'Star Wars', .007 ];
, Вроде круто, правда? - Ассоциативные массивы похожи на стандартные массивы, о которых мы видим, за исключением того, что они состоят из пар ключ-значение. Это означает, что каждое значение извлекается ключом, поэтому, если бы мы преобразовали первый массив в ассоциативный массив, он может выглядеть примерно так: array (‘rhythm-guitar’ => ‘John’, ‘bass’ = > ‘Paul’, ‘lead-гитарист’ => ‘George’, ‘drums’ => ‘Ringo’); Если формат сейчас выглядит странно, не беспокойтесь об этом! Мы рассмотрим их более подробно позже в этой серии. Основной вывод заключается в том, что стандартные массивы индексируются численно, то есть
0
,1
,2
,3
и т. Д., А связанные массивы индексируются их ключами, такими как'rhythm-guitar'
,'drums'
и т. Д. , - Объекты, о которых мы говорили в прошлый раз, возможно, являются наиболее сложными из типов данных, предлагаемых PHP, потому что они представляют собой комбинацию всего . Их атрибуты состоят из типов данных или даже других объектов, они являются функциями и выполняют операции не только с другими простыми типами данных, но и со сложными типами данных.
Что касается объектов, лучший способ увидеть, насколько сложными они могут быть, — это увидеть их в действии, что мы обязательно сделаем, когда будем создавать плагин.
Примечание о массивах
Обратите внимание, что в некоторых языках размер массива должен быть объявлен, прежде чем вы сможете его использовать. Например, в C вы должны указать компилятору, что массив будет содержать ровно 10 значений.
В случае с PHP это не так. Массив PHP является динамическим, что означает, что вы можете продолжать добавлять данные в массив без необходимости увеличивать его размер. Да, как и во всем, существуют ограничения, но обычно они связаны с размером хранимых данных или объемом памяти, доступной машине.
Не позволяйте фразам запугивать вас!
Но пока не позволяйте словам простым и сложным запугивать вас. Конечно, «просто» относительно просто, верно? Но у «сложного» есть смысл, который будет трудно понять, и это неправда — надеюсь, эта статья продемонстрирует это.
Сложные типы данных могут просто содержать несколько частей данных. Простые типы данных не могут.
Есть ли еще?
Да это так. А именно ресурсы , обратные вызовы и псевдотипы . Большинство из них выходит за рамки этой конкретной серии; тем не менее, мы можем использовать обратные вызовы (которые являются определенным типом функций) позже, когда начнем создавать наш плагин.
Не стесняйтесь читать как можно больше об этом, но знайте, что они выходят за рамки содержания, которое мы будем охватывать в этой конкретной серии, поэтому, если вы чувствуете, что они ошеломлены, возможно, посетите их по окончании серии ,
Слово о сильно типизированных языках
Некоторые языки программирования известны как динамически типизированные (или слабо типизированные), в то время как другие известны как строго типизированные языки.
Это еще один случай, когда терминология часто пугает новых программистов, а не дает им возможность узнать, как использовать доступные инструменты, но различие между этими двумя факторами действительно довольно просто:
- Строго типизированные языки означают, что переменные должны быть сначала объявлены как определенный тип, и они могут содержать только определенный тип данных. Например, если бы я хотел сохранить строку, я бы объявил переменную как
string sMyName
; Затем я бы сохранил строку в переменной. , Это означает, что переменнаяsMyName
может содержать только строки. Если вы попытаетесь сохранить другой тип данных в этой переменной, компилятор выдаст ошибку. - Языки с динамической типизацией, такие как PHP, позволяют одной переменной содержать несколько типов в любой заданной точке выполнения. Используя приведенный выше пример, я мог бы с легкостью сказать, что как я мог
$my_name = false
. Если вы попытаетесь сохранить другой тип данных в этой переменной, он будет работать нормально. Вы можете видеть, что это имеет как преимущества, так и недостатки.
Куда дальше?
Прежде чем мы вернемся в мир объектно-ориентированного программирования, нам нужно поговорить о нескольких дополнительных базовых структурах программирования, таких как управляющие структуры.
К ним относятся такие вещи, как циклы, условные выражения и т. Д., Которые могут влиять на поток кода в течение всего жизненного цикла программы. Кроме того, они работают рука об руку с типами данных, которые мы изложили здесь.
Поэтому, прежде чем мы перейдем к следующей статье, обязательно просмотрите все, что здесь происходит, оставьте комментарии, вопросы и отзывы в ленте комментариев.
Увидимся в следующей статье!