PHP Еще немного основ

Starkark

Заблокирован
Сообщения
0
Симпатии
0
Баллы
0
Объекты ( Object )
Оглянитесь вокруг. Всё вокруг нас это объекты. Стул, бутылка, веревка, мыло, это всё объекты. У объектов есть свойства и функции.
Объект - Машины. Свойство - Цвет. Значение - белый.
Объект - Машины. Функция - бибикать. Действие - издаёт звук.
<?PHP

// Определяем что такое машины, что она умеет делать и как.
class car
{
var $color = 'White';
function tut_tut() { echo "BIp BIp"; }
}

$honda = new car; // присваиваем переменной honda объект - Машину
echo $honda->color; // Выводим свойство машины - цвет

?>

Ресурс ( Resource )
Ресурс представляет из себя указатель, ссылку, на внешний ресурс.
Представим автосервис с большим количеством машин, которым заливают несколько по литров масла в двигатель. Со свистом тормозов из подворотни вылетает феррари и паркуется на очередной сервисной парковке. Хозяин сервиса уже кричит рабочему, залить 5 литров масла и тычет большим пальцем в красную феррари.
Наш рабочий получает в данном случае два типа данных - число (литров масла) и указатель на машину, то-есть определение - какому именно объекту из всех вокруг нужно подлить чего-нибудь.

Подмечу, что рабочий получает от босса вовсе не саму машину, а лишь дескриптор (указатель) машины с которой предстоит работать. В php этим дескриптором является тип данных resource.

Null
Чтобы понять что такое Null нужно понять как хранит php переменные в памяти. Компьютерная память состоит из большого количества маленьких ячеек. В эти ячейки и записываются твои данные. Обращение к той или иной ячейке происходит при помощи идентификатора ячейки в памяти, её места.

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

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

Значение Null сбрасывает привязку названия переменной к ячейке в памяти и переменной больше не соответствует никакая ячейка. Переменная просто никуда не указывает и ни к чему не ведет. В этом случае переменная считается неопределенной,
так как название есть а привязка к ячейке отсутствует.

Присвоение переменной значения null можно делать так: $a = Null;
Заметьте что слово null не взято в кавычки, потому что это не строка с текстом.

Булев тип ( Boolean )
Тип данных который включает в себя всего два значения
Правда и неправда. True и False. Используется в основном в условиях.
к примеру выражение ($a > $b) может быть правдой или не правдой.


Что это за странные типы данных которые я вижу в документации ?

mixed - обозначает что функция возвращает разные типы данных, в зависимости от обстоятельств
number - означает что возвращаемый результат представляет из себя integer или float
callback - в php функция вызывается как её название и скобочки. К примеру print().

Некоторые функции в php (к примеру call_user_func() ) принимают в качестве параметров названия функций с которыми они будут работать. в таком случае параметр формата callback которые они требуют представляют из себя строку с названием функции без скобочек. К примеру call_user_func('increment', $a);
Возможно данный аспект будет подробнее рассмотрен в разделе работы с функциями.
Вопросы и задания на усвоение материала:
1. $a = '22'; Какого типа является сейчас переменная $a ?

2. $b = $a = 7; чему равно $b ? не забудьте что читается в лева на право.

3. $a = '46'; $b = '32'; Что больше, а или б ?

4. Какой тип переменной лучше всего подойдёт для хранения результата деления 2 на 4?

5. $a = 5; $b=2.5; Какого типа данных будет результат деления А на Б ?

6. Попробуйте присвоить переменной значение +214748364900000000000000.

7. Выясните сколько это 2B в шестнадцатеричной системе ? ( Присвойте переменной значение и выведите ).

8. Можно ли переменной присвоить переменную ? Если да - покажите как. Если нет, объясните почему нет.

9. $a='Вася'; $b = 'Петя'; Поменяйте местами значения переменных .

10. Создайте одномерный числовой массив с одним элементом.
Добавьте туда еще один элемент.
Добавьте туда третий элемент представляющий из себя ассоциативный массив с одним элементом.
Добавьте в этот ассоц. массив еще один элемент.
Замените первый элемент в родительском массиве на второй элемент из ассоц. массива.

11. Создайте переменную типа Resource

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

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

Узнать какой тип у переменной можно при помощи функции gettype();
Функция это кучка действий. Она принимает аргументы, делает с ними некие операции и возвращает результат. К примеру Приготовить пиццу это функция принимающая параметры - тесто, яйца, сыр, кетчуп, анчоусы, плиту, и возвращает Пиццу.
Возвращаемое значение у функций может быть любого типа данных.

У функции getttype() возвращаемый результат это строка содержащие название типа.
Если вы попробуете код echo gettype(512); то получите в ответ строку "Integer".

Можно узнать является ли тем или иным типом данных переменная при помощи
is_float(), is_int(), is_string(), is_object(), is_array().
Эти функции принимают один аргумент и возвращают булев тип (true или false).

Изменить тип переменной можно несколькими функциями
intval() - возвращает аргумент в виде целого числа integer
floatval() - возвращает аргумент в виде дробного числа float
strval() - возвращает аргумент в виде строки string
settype() - превращает первый аргумент в указанный во втором аргументе тип
settype($a,'integer') Превратит $a в целое число.
Заметьте что эта функция не возвращает нового значения, а изменяет переданный ей параметр.

Допустимыми значениями параметра type являются:

* "boolean"
* "integer"
(или "int")
* "float"
* "string"
* "array"
* "object"
* "null"
Операции с переменными

Арифметические операторы
-$a Отрицание Смена знака $a.
$a + $b Сложение Сумма $a и $b.
$a - $b Вычитание Разность $a и $b.
$a * $b Умножение Произведение $a и $b.
$a / $b Деление Частное от деления $a на $b.
$a % $b Деление по модулю Целочисленный остаток от деления $a на $b.

Операторы инкремента и декремента
++$a Префиксный инкремент Увеличивает $a на и возвращает значение $a.
$a++ Постфиксный инкремент Возвращает значение $a, а затем увеличивает $a на 1.
--$a Префиксный декремент Уменьшает $a на 1 и возвращает значение $a.
$a-- Постфиксный декремент Возвращает значение $a, а затем уменьшает $a на 1.

Таким образом $a = 5; echo $a++ ; Сначала выведет 5, а потом увеличит 5 на 1.

Логические операторы
$a and $b Логическое 'и' TRUE если и $a, и $b TRUE.
$a or $b Логическое 'или' TRUE если или $a, или $b TRUE.
$a xor $b Исключающее 'или' TRUE если $a, или $b TRUE, но не оба.
! $a Отрицание TRUE если $a не TRUE.
$a && $b Логическое 'и' TRUE если и $a, и $b TRUE.
$a || $b Логическое 'или' TRUE если или $a, или $b TRUE.

Строковые операторы
В PHP есть два оператора для работы со строками. Первый - оператор конкатенации ('.'), который возвращает объединение левого и правого аргумента в одну строку. Второй - оператор присвоения вместе с конкатенацией.
<?PHP

$a = "Hello ";
$b = $a . "World!"; // $b содержит строку "Hello World!"

$a = "Hello ";
$a .= "World!"; // $a содержит строку "Hello World!"

?>

Побитовые операторы
Побитовые операторы позволяют устанавливать конкретные биты в 0 или 1 для целочисленных значений. В случае если и левый, и правый операнды строки, побитовые операции будут работать с их ASCII-представлениями.
$a & $b Побитовое 'и' Устанавливаются только те биты, которые установлены и в $a, и в $b.
$a | $b Побитовое 'или' Устанавливаются те биты, которые установлены либо в $a, либо в $b.
$a ^ $b Исключающее'или' Устанавливаются только те биты, которые установлены либо только в $a, либо только в $b
~ $a Отрицание Устанавливаются те биты, которые в $a не установлены, и наоборот.
$a << $b Сдвиг влево Все биты переменной $a сдвигаются на $b позиций влево (каждая позиция подразумевает 'умножение на 2')
$a >> $b Сдвиг вправо Все биты переменной $a сдвигаются на $b позиций вправо (каждая позиция подразумевает 'деление на 2')

Операторы сравнения
$a == $b Равно TRUE если $a равно $b.
$a === $b Тождественно равно TRUE если $a равно $b и имеет тот же тип.
$a != $b Не равно TRUE если $a не равно $b.
$a <> $b Не равно TRUE если $a не равно $b.
$a !== $b Тождественно не равно TRUE если $a не равно $b или они разных типов
$a < $b Меньше TRUE если $a строго меньше $b.
$a > $b Больше TRUE если $a строго больше $b.
$a <= $b Меньше или равно TRUE если $a is меньше или равно $b.
$a >= $b Больше или равно TRUE если $a больше или равно $b.

Операторы работы с массивами
$a + $b Объединение Объединение массива $a и массива $b.
$a == $b Равно TRUE в случае, если $a и $b содержат одни и те же элементы.
$a === $b Тождественно равно TRUE в случае, если $a и $b содержат одни и те же элементы в том же самом порядке.
$a != $b Не равно TRUE если массив $a не равен массиву $b.
$a <> $b Не равно TRUE если массив $a не равен массиву $b.
$a !== $b Тождественно не равно TRUE если массив $a не равен тождественно массиву $b.