Андрей Смирнов
Время чтения: ~21 мин.
Просмотров: 0

Php типы данных

Значения по умолчанию и конструкторы

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

Вы можете использовать null по умолчанию, только если тип на самом деле обнуляем. Это может показаться очевидным, но есть некоторое устаревшее поведение с параметрами по умолчанию, где допускается следующее:

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

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

Очевидным местом для инициализации типизированных значений, конечно же, будет конструктор:

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

Что такое суперглобалы?

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

Вот список суперглобалов, доступных в PHP версии 5.3:

  • $GLOBALS — список всех глобальных переменных в скрипте (исключая суперглобалов)
  • $_GET — содержит список всех полей формы, отправленной браузером с помощью запроса GET
  • $_POST — содержит список всех полей формы отправленной браузером с помощью запроса POST
  • $_COOKIE — содержит список всех куки, отправленных браузером
  • $_REQUEST — содержит все сочетания ключ/значение, которые содержатся в массивах $_GET, $_POST, $_COOKIE
  • $_FILES — содержит список всех файлов, загруженных браузером
  • $_SESSION — позволяет хранить и использовать переменные сессии для текущего браузера
  • $_SERVER — содержит информацию о сервере, такую как, имя файла выполняемого скрипта и IP адрес браузера.
  • $_ENV — содержит список переменных среды, передаваемых PHP, например, CGI переменные.
<?php

$yourName = $_GET;
echo "Привет, $yourName!";

?>

Если вы запустите выше приведенный скрипт с помощью строки URL , то он выведет:

Привет, Фред!

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

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

<?php

$globalName = "Зоя";

function sayHello() {
  echo "Привет, " . $GLOBALS . "!<br>";
}

sayHello();  // Выводит "Привет, Зоя!"

?>

Статические переменные: они находятся где-то рядом

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

В большинстве случаев это отлично работает. Таким образом функции самодостаточны и работают всегда одинаково при каждом вызове.

Однако, есть ситуации, когда было бы удобно создать локальную переменную, которая «помнит» свое значение между вызовами функции. Такая переменная  называется статической.

Для создания статической переменной в функции нужно использовать ключевое слово перед именем переменной и обязательно задать ей начальное значение. Например:

function myFunction() {
  static $myVariable = 0;
}

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

<?php

function createWidget() {
  $numWidgets = 0;
  return ++$numWidgets;
}

echo "Создаем некие виджеты...<br>";
echo createWidget() . " мы уже создали.<br>";
echo createWidget() . " мы уже создали.<br>";
echo createWidget() . " мы уже создали.><br>";

?>

Но, так как переменная создается каждый раз при вызове функции, то мы получим следующий результат:

Создаем некие виджеты...
1 мы уже создали.
1 мы уже создали.
1 мы уже создали.

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

<?php

function createWidget() {
  static $numWidgets = 0;
  return ++$numWidgets;
}

echo "Создаем некие виджеты...<br>";
echo createWidget() . " мы уже создали.<br>";
echo createWidget() . " мы уже создали.<br>";
echo createWidget() . " >мы уже создали.<br>";

?>

Теперь скрипт выдаст ожидаемый результат:

Создаем некие виджеты...
1 мы уже создали.
2 мы уже создали.
3 мы уже создали.

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

Наследование

Последнее обновление: 1.11.2015

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

Чтобы наследовать один класс от другого, нам надо применить инструкцию extends. Например, унаследуем класс Customer от класса
User:

<?php
class User
{
	public $name, $age;
	
	function __construct($name, $age)
	{
		$this->name = $name;
		$this->age = $age;
	}
	function getClassInfo()
	{
		echo "Класс User описывает пользователей<br />";
	}
	function getInfo()
	{
		echo "Имя: $this->name ; Возраст: $this->age <br />";
	}
}
class Customer extends User
{
	public $account, $sum;
	
	function __construct($name, $age, $acc)
	{
		// вызов конструктора базового класс
		parent::__construct($name, $age);
		$this->account=$acc;
		$this->sum=20;
	}
	
	// скрывает родительский метод getClassInfo()
	function getClassInfo()
	{
		echo "Класс Customer описывает клиентов <br />";
	}
	
	function getInfo()
	{
		parent::getInfo();
		echo "Номер счета $this->account ; Сумма: $this->sum <br />";
	}
}

$client = new Customer("Джон", 25, "1123400895");
$client->getInfo();
$client->getClassInfo();
?>

Класс Customer наследует от класса-родителя User весь функционал, а также добавляет два дополнительных свойства $account и $sum.
И несмотря на то, что свойство $name определено в классе User, его также можно получить из класса Customer:

Если в классе-наследнике определен метод с тем же именем, что и в классе-родителе, то метод класса-наследника замещает метод класса-родителя. В нашем случае
в обоих классах определен метод , поэтому Customer будет обращаться к своему методу .

Если нам надо обратиться к методу родительского класса, то мы можем использовать инструкцию parent:

parent::getInfo();

И при вызове метода из класса Customer сначала будет вызываться метод getInfo() родительского класса User, а затем остальные инструкции:

function getInfo()
{
	parent::getInfo();
	echo "Номер счета $this->account ; Сумма: $this->sum <br>";
}

Класс Customer также определяет свой конструктор:

function __construct($name, $age, $acc)
{
	// вызов конструктора базового класс
	parent::__construct($name, $age);
	$this->account=$acc;
	$this->sum=20;
}

Здесь также сначала идет обращение к конструктору класса-родителя, чтобы он сам выполнил установку свойств $name и $age.

Запрет наследования и инструкция final

В примере выше методы и переопределяются классом-наследником. Однако иногда возникают ситуации, когда надо
запретить переопределение методов. Для этого в классе-родителе надо указать методы с модификатором final:

class User
{
	//.........................
	
	final function getInfo()
	{
		echo "Имя: $this->name ; Возраст: $this->age <br />";
	}
}

В этом случае во всех классах-наследниках от класса User мы уже не сможем определить метод с таким же именем.

НазадВперед

Обработка форм

Последнее обновление: 1.11.2015

Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат
в себе различные элементы ввода — текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные.

Создание форм состоит из следующих аспектов:

  • Создание элемента в разметке HTML

  • Добавление в этот элемент одно или несколько поле ввода

  • Установка метода передачи данных: или

  • Установка адреса, на который будут отправляться введенные данные

Итак, создадим новую форму. Для этого определим новый файл form.php, в которое поместим следующее содержимое:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h3>Вход на сайт</h3>
<form action="login.php" method="POST">
	Логин: <input type="text" name="login" /><br><br>
	Пароль: <input type="text" name="password" /><br><br>
	<input type="submit" value="Войти">
</form>
</body>
</html>

Атрибут элемента указывает, что данные формы будет обрабатывать скрипт login.php, который будет
находиться с файлом form.php в одной папке. А атрибут указывает, что в качестве метода передачи данных будет применяться метод POST.

<?php
$login = "Не известно";
$password = "Не известно";
if(isset($_POST)) $login = $_POST;
if (isset($_POST)) $password = $_POST;

echo "Ваш логин: $login  <br> Ваш пароль: $password";
?>

Чтобы получить данные формы, используется глобальная переменная $_POST. Она представляет ассоциативный массив данных, переданных с помощью метода POST.
Используя ключи, мы можем получить отправленные значения. Ключами в этом массиве являются значения атрибутов у полей ввода формы.

Так как атрибут поля ввода логина имеет значение (),
то в массиве $_POST значение этого поля будет представлять ключ «login»:

И поскольку возможны ситуации, когда поле ввода будет не установлено, например, при прямом переходе к скрипту: http://localhost:8080/login.php.
В этом случае желательно перед обработкой данных проверять их наличие с помощью функции isset(). И если переменная установлена,
то функция isset() возвратит значение .

Теперь мы можем обратиться к форме:

И по нажатию кнопки введенные данные методом POST будут отправлены скрипту login.php:

Необязательно отправлять данные формы другому скрипту, можно данные формы обработать в том же файле формы. Для этого изменим файл form.php
следующим образом:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div>
<?php
if(isset($_POST) && isset($_POST)){

	$login=$_POST;
	$password = $_POST;
	echo "Ваш логин: $login <br> Ваш пароль: $password";
}
?>
</div>
<h3>Вход на сайт</h3>
<form method="POST">
	Логин: <input type="text" name="login" /><br><br>
	Пароль: <input type="text" name="password" /><br><br>
	<input type="submit" value="Отправить">
</form>
</body>
</html>

Безопасность данных

Большое значение в PHP имеет организация безопасности данных. Рассмотрим несколько простых механизмов, которые могут повысить безопасность нашего веб-сайта.

Но вначале возьмем форму из прошлой темы и попробуем ввести в нее некоторые данные. Например, введем в поле для логина «<script>alert(hi);</script>»,
а в поле для пароля текст «<h2>пароль</h2>»:

После отправки данных в html разметку будет внедрен код javascript, который выводит окно с сообщением.

Чтобы избежать подобных проблем с безопасностью, следует применять функцию htmlentities():

if(isset($_POST) && isset($_POST)){

	$login=htmlentities($_POST);
	$password = htmlentities($_POST);
	echo "Ваш логин: $login <br> Ваш пароль: $password";
}

И даже после ввода кода html или javascript все теги будут экранированы, и мы получим следующий вывод:

Еще одна функция — функция strip_tags() позволяет полностью исключить теги html:

if(isset($_POST) && isset($_POST)){

	$login=strip_tags($_POST);
	$password = strip_tags($_POST);
	echo "Ваш логин: $login <br> Ваш пароль: $password";
}

Результатом ее работы при том же вводе будет следующий вывод:

НазадВперед

Работа с переменными:

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

Работа с числам:

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

Default

1
2
3
4
5
6
7
8

$a=10;

$b=3;

$c=$a+$b;// Сложение, $c будет равен 13

$c=$a-$b;// Вычитание, $c будет равен 7

$c=$a *$b;// Умножение, $c будет равен 30

$c=$a$b;// Деление, $c будет равен 3.3333…

$c=$a%$b;// Деление с остатком, $c будет равен 1

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

Остальное это обычные арифметические действия, сложение, вычитание и умножение.

Вы ещё можете взять переменную и прибавить к её существующему значению другое значение, к примеру, два, точно также можете делать и с другими операторами PHP.

PHP

1
2
3
4
5
6
7
8

$a=3;

$b=10;

$b+=$a;// Сложение, $b будет равен 13, это тоже самое что: $b = $b + $a

$b-=$a;// Вычитание, $b будет равен 7, это тоже самое что: $b = $b — $a

$b*=$a;// Умножение, $b будет равен 30, это тоже самое что: $b = $b * $a

$b/=$a;// Деление, $b будет равен 3.3333…, это тоже самое что: $b = $b / $a

$b%=$a;// Деление с остатком, $b будет равен 1, это тоже самое что: $b = $b % $a

Это удобно использовать, чтобы не создавать лишние переменные или не писать длинную команду типа «$b = $b + $a» и т.д..

Также надо сказать о инкремент и декремент в PHP, для тех кто не знает, то это когда переменную увеличивают на один и соответственно уменьшение на один.

PHP

1
2
3
4

$a=1;

$a++// Инкремент, $a равна 2

$a—// Декремент, $a равна 0

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

Работа со строками:

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

PHP

1
2
3
4

$a=»Hello»;

$b=»World»;

$c=$a.$b;// $c будет равен HelloWorld

Ещё есть вариант написать сокращёно, .

Также встаёт вопрос, как в PHP вставить переменную в строку, тут всё зависит от того, какие кавычки вы используете.

PHP

1
2
3
4
5
6
7

$a=10;

 
// Вставляем переменную в строку с двойными кавычками

echo»Возраст: $a лет»;

 
// Вставляем переменную в строку с двойными кавычками

echo’Возраст: ‘.$a.’ лет’;

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

Если используете строку с одинарными кавычками, то вам надо складывать строки с переменной, переменная число сразу превращается в строку, поэтому с этим нет проблем.

Также, если вы не знаете, выводит на экран данные, не важно это строка или число

Типы данных: строки

// Строка(string) -это набор символов, где символ -это то же самое, что и байт
echo 'это простая строка в апострофах';
echo 'это простая строка в двойных кавычках';
echo "Это будет развернуто:\n в две строки";
echo 'А это не будет развернуто:\n в две строки';
$name = "John"; $age = 25;
echo "Значения переменных $name и $age подставятся в строку";
echo 'А здесь значения переменных $name и $age неразворачиваются';
HEREDOC
	подставятся в строку, а сама строка развернётся
	Значения переменных $name и $age
HEREDOC;
// Экранирование переменных
$juice = "apple";
// Проблема 
echo "He drank some $juicejuice."; echo "He drank some juice made of $juices.";
// Решение
echo "He drank some juice made of {$juice}s.";
echo "He drank some juice made of ${juice}s.";
// Доступ к символу в строке (фактически, к байту!)
$str = 'This is a test.';
// Получение первого символа в строке $first = $str{0};
// Получение третьего символа в строке
$third = $str{2};
// Получение последнего символа в строке $last = $str{strlen($str)-1};
// Изменение последнего символа в строке
$str{strlen($str)-1} = '!';

Приведение к булеву типу

Следующие значения в результате преобразования дают значение :

  • само значение
  • 0 и 0.0 (нуль)
  • пустая строка, и строка «0»
  • массив без элементов
  • Объекты , созданные из пустых тегов

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

echo (bool)"", ": FALSE", "<br>";   // FALSE
echo (bool)1, ": TRUE", "<br>";     // TRUE
echo (boolean)[], ": FALSE";        // FALSE

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

Переменные

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

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

К названиям переменных применяются следующие правила:

  1. Название переменной должно передавать намерения программиста

  2. Название переменной должно сообщить, почему эта переменная существует, что она делает и как используется

  3. Название переменной не должно быть коротким

  4. В названии переменной не должен использоваться тип данных. Исключение составляет (, ), т.к. в ином случае его не отличить от массива с данными.

  5. Если переменная хранит признак, то он должен быть включен в название ()

  6. Переменные, отражающие свойства объекта, должны включать название объекта (, , , )

  7. Переменные и свойства объекта должны являться существительными и называться так, чтобы они правильно читались при использовании, а не при инициализации

    Плохо:

    Хорошо:

  8. Названия переменных должны содержать глагол , или

  9. Запрещены отрицательные логические названия

    Плохо:

    Хорошо:

  10. При наличии свойств (пункт 8 и аналогичные), порядок имя переменной состоит из: имени объекта, по отношению к которому используется переменная), свойство и продолжение названия переменной (, )

Правила оформления кода

В первую очередь ставится пространство имен (namespace), которое используется (если есть). Далее пишется конструкции использования классов (). В случае использования нескольких
классов одного пространства имен происходит группировка с помощью конструкции . Далее идет объявление класса.

Фигурные скобки ставятся на той же строке и разделяются пробелом.

Круглые скобки:

  1. Внутри не разделяются пробелом.
  2. Снаружи разделяются пробелами управляющие конструкции
  3. После названия метода/функции — пробел не ставится.

Каждая переменная должна быть объявлена на новой строке.

Условия и служебные вызовы методов разделяются переносом строки, переменные и работа с ними переносами строк не разделяются.

Внутри условий и циклов дополнительный перенос на новую строку не ставится.

Содержимое класса разделяется сверху одной пустой строкой.

Перед возвращаемым значением() обязательно ставится перенос строки, если метод не состоит из единственной строки.

Если условие является большим, то обязательно выделить его в одно или несколько смысловых выражений и использовать его (их) в условии.

Плохо:

Хорошо:

Что такое переменная в PHP

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

  • В PHP переменную не нужно объявлять перед добавлением к ней значения. PHP автоматически преобразует переменную в правильный тип данных, в зависимости от ее значения.
  • После объявления переменной ее можно повторно использовать в коде.
  • Оператор присваивания (=) используется для присвоения значения переменной.

В PHP переменная может быть объявлена как: $var_name = value;

<?php
// Инициализация переменных
$txt = "Hello World!";
$number = 10;

// Вывод значения переменных
echo $txt; // Результат: Hello World!
echo $number; // Результат: 10
?>

В приведенном выше примере мы создали две переменные, первая из которых имеет строковое значение, а вторая — число. Позже мы отобразили значения переменных в браузере с помощью оператора echo. Оператор PHP echo часто используется для вывода данных в браузер. Мы узнаем больше об этом в одном из следующих уроков.

Соглашения об именовании переменных PHP

Существуют следующие правила именования переменных в PHP:

  • Все переменные в PHP начинаются со знака $, за которым следует имя переменной.
  • Имя переменной должно начинаться с буквы или символа подчеркивания _.
  • Имя переменной не может начинаться с цифры.
  • Имя переменной в PHP может содержать только буквенно-цифровые символы и символы подчеркивания (A-z, 0-9 и _).
  • Имя переменной не может содержать пробелов.

Области видимости Global и Local (глобальная и локальная)

Переменная, объявленная за пределами функции, имеет GLOBAL SCOPE (ГЛОБАЛЬНУЮ ОБЛАСТЬ ПРИМЕНЕНИЯ) и может быть доступна только за пределами функции:

Пример

Переменная с глобальной областью применения:

<?php$x = 5; // глобальная область примененияfunction myTest() {    // использование x внутри этой функции приведет к ошибке    echo «<p>Variable x inside function is: $x</p>»;} myTest();echo «<p>Variable x outside function is: $x</p>»;?>

Переменная, объявленная внутри функции, имеет ЛОКАЛЬНУЮ ОБЛАСТЬ ПРИМЕНЕНИЯ и доступ к ней возможен только внутри этой функции:

Пример

Переменная с локальной областью применения:

<?phpfunction myTest() {    $x = 5; // локальная область применения    echo «<p>Variable x inside function is: $x</p>»;} myTest();// использование x вне функции вызовет ошибкуecho «<p>Variable x outside function is: $x</p>»;?>

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

Значение NULL

Специальное значение NULL используется для представления пустых переменных в PHP. Переменная типа NULL является переменной без каких-либо данных. NULL — единственно возможное значение типа null.

<?php
$a = NULL;
var_dump($a);
echo "<br>";

$b = "Hello World!";
$b = NULL;
var_dump($b);
?>

Когда переменная создается без значения, например, $var; ему автоматически присваивается значение NULL. Многие начинающие PHP-разработчики ошибочно считают, что $var1 = NULL; и $var2 = «»; это одно и то же, но это не так. Обе переменные разные — $var1 имеет нулевое значение, а $var2 указывает, что ему не присвоено значение.

Комментирование кода

В общем случае комментарии запрещены (НЕ «всегда»). Любой участок кода, который необходимо выделить или прокомментировать, надо выносить в отдельный метод.

Комментарии должны быть расположены перед объявлением классов, переменных и методов и быть оформлены в соответствии с PHPDoc. Комментарий перед классом должен содержать описание бизнес-логики и отражать его назначение с приведением примеров использования.

Однострочный комментарии обозначаются символами , а многострочный .

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

Правила написания кода

Везде, где имеет смысл, должнно быть прописано

В функциях/методах вместо отсутствующего скалярного значения используется . и пустую строку нельзя использовать в качестве показателя отсутствия значения.

Нельзя изменять переменные, которые передаются в метод на вход (исключение — если эта переменная объект).

Нельзя нескольким переменным присваивать одно и то же значение. Для проверки наличия ключа в ассоциативном массиве используется , а не . Нельзя смешивать в массиве строковые и числовые ключи. Нельзя сортировать ассоциативные массивы.

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

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

Вместо лишней конкатенации используем подстановку переменных в двойных кавычках

В методах должна быть использована максимально возможная типизация, включая тип возвращаемого значения(). Все параметры и их типы должны быть описаны в объявлении метода либо в PHPDoc. Методы названия, которых начинаются c и , должны выбрасывать исключения и не возвращать значения.

Все методы класса по умолчанию должны быть . Если метод используется наследниками класса, то он объявляется . Если используется сторонними классами, тогда .

Если метод может вернуть , то желательно реализовать шаблон проектирования Null object, или выбросить исключение, или вернуть объект особого случая (пример: пустой массив).

При возврате из метода данных типа — недопустимо писать , всегда использовать конструкцию или . приведен для примера, можно использовать любые ключи в неограниченном количестве.

Метод должен явно отличать нормальные ситуации от исключительных.

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

В условном операторе должно проверяться исключительно значение. В сравнении не переменных используется строгое сравнение с приведением типа (), автоматическое приведение и нестрогое сравнение не используются.

Плохо:

Хорошо:

PHP статическое ключевое слово

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

Для этого используйте ключевое слово при первом объявлении переменной:

Пример

<?phpfunction myTest()
{
    static $x = 0;
    echo $x;
    $x++;
}
myTest();
myTest();
myTest();?>

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

Примечание: Переменная по-прежнему является локальной для функции.

❮ Назад
Дальше ❯

Приведение к целому числу

При приведении в , преобразуется в 0 (нуль), а — в 1 (единицу). При приведении в , дробная часть будет округлена в сторону нуля. Значение преобразуется в 0:

echo (int)FALSE, "<br>";   // 0
echo (int)TRUE, "<br>";    // 1
echo (int)12.3, "<br>";    // 12
echo (int)NULL;            // 0

Строки преобразуются по следующим правилам:

  • Если первый символ строки является цифрой, знаком или , то интерпретатор переходит к анализу второго символа, если второй символ строки является цифрой, то интерпретатор переходит к анализу третьего символа и так до тех пор, пока не будет обнаружен символ отличный от цифры, после этого интерпретатор возвращает полученное целое число.
  • Если строка пустая или первый символ строки не является цифрой, знаком или , она преобразуется в 0.
echo (int)"12abc", "<br>";    // 12
echo (int)"a123bc", "<br>";   // 0
echo (int)"-12", "<br>";      // -12
echo (int)"12.3", "<br>";     // 12
echo (int)"";                 // 0

Для других типов поведение преобразования в не определено. Поэтому не нужно полагаться на любое наблюдаемое поведение, так как оно может измениться без предупреждения.

Вывод переменных[править]

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

$a=3;
$b=4;
$c=$a+$b;
echo $c;

Если вы всё правильно записали в приведённом выше коде, то, открыв страницу с расширением *.php (не забывайте, интерпретатор будет работать только с такими файлами), где он записан, в браузере, вы увидите на экране число 7.

Вывод переменных вместе с текстомправить

Располагая нашими текущими знаниями (если вы, конечно, не были знакомы с PHP до прочтения учебника), мы можем выполнить эту задачу только одним способом:

$a=3;
$b=4;
$c=$a+$b;
echo "При сложении чисел ";
echo $a;
echo " и ";
echo $b;
echo " получается число ";
echo $c;
echo ".";

Такой код, хотя и выведет на экран желаемую фразу, весьма громоздкий и сложный для прочтения. Поэтому лучше вывести всё это в одной строке кода. Для того, чтобы сделать это, нужно после окончания текста, помещённого в кавычки, поставить запятую, после которой указать имя выводимой переменной. После этого можно поставить ещё одну запятую, после которой идёт текст, опять в кавычках, и так далее — в окончании всей конструкции, как и раньше ставится точка с запятой.

$a=3;
$b=4;
$c=$a+$b;
echo "При сложении чисел ",$a," и ",$b," получается число ",$c,".";

Приведённый выше код гораздо более компактен и приятен для прочтения, хотя результат работы будет идентичен с предыдущим.
Если нет желания разделять запятыми переменные и текст и ставить много дополнительных кавычек, можно этого и не делать. Не случайно имена всех переменных в PHP начинаются со знака доллара ($). Если указать в тексте имя переменной, интерпретатор сам поймёт что это не просто текст (главное не забыть поставить после имени пробел, чтобы интерпретатор мог вовремя остановиться при прочтении имени переменной).

<?php
$a=3;
$b=4;
$c=$a+$b;
echo "При сложении чисел $a и $b получается число $c.";
Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации