Как создать файл phpinfo и проверить информацию о php

Что такое PHP скрипт

PHP-скрипт — это обычный текстовый файлик с расширением .php. Точно такой же, как html и css.

Но есть одно важное отличие:

Скрипты запускаются только через http-запросы в браузере. Это значит, что для запуска скрипта script.php необходимо в адресной строке браузера написать site.ru/script.php

Если скрипт не работает — проверь текущий URL. Если там будет что-то вроде file:///D:/openserver/domains/site.ru/script.php — это значит, что ты пытаешься не перейти на страницу сайта, а открыть сам PHP файлик в браузере. Это неправильно.

Веб-серверы чаще всего настроены так, что при заходе на главную страницу (например site.ru) автоматически запускается файл index.php или index.html, лежащий в корне сайта.

Создай в корневой папке сайта файл с названием index.php и открой его в своём текстовом редакторе. При наличии файла index.html его нужно удалить.

Если у тебя пока нет текстового редактора — рекомендую лёгкий и бесплатный Notepad++, он гораздо удобней встроенного в Windows блокнота.

Обязательно следи за кодировкой скриптов. Кодировка должна быть либо UTF-8 без BOM (если такая доступна в твоём редакторе), либо просто UTF-8.

Выбор кодировки в Notepad++

Как построить карьеру

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

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

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

Лучшие вузы и курсы для обучения

России в наследство от Советского Союза досталось множество технических вузов (дипломы которых весьма ценятся за рубежом). В большинстве из них можно получить знания в области информационных технологий. К лидерам отрасли отнести:

  • Санкт-Петербургский университет аэрокосмического приборостроения. В его Институте фундаментальной подготовки и технологических инноваций обучают будущих специалистов по кибернетике, математике, программированию на различных языках с ориентацией на практическое применение навыков в разных сферах деятельности. С таким образованием выпускнику легко найти работу в области IT.
  • МИРЭА – Российский технологический университет. В его Институте информационных технологий учат прикладной математике и программированию. Также студенты осваивают особенности создания и функционирования аналитических систем, обеспечение их безопасности, различные инструменты для работы в сети, промышленную информатику.
  • Московский политехнический университет – один из флагманов в области ИТ. Его факультет информационных технологий выпускает высококвалифицированных профессионалов по интеграции и программированию систем автоматизированного проектирования, на основе которых могут конструироваться облачные, мобильные и другие приложения. Также здесь учат BigData, web-дизайну, кибербезопасности и электронному бизнесу.
  • Санкт-Петербургский политехнический университет Петра Великого. Его Институт компьютерных наук и технологий дает фундаментальные знания и прикладные навыки по программированию интеллектуальных и автоматизированных систем, созданию ПО для вычислительной техники, разработке веб-систем.
  • Московский государственный технический университет им. Н. Э. Баумана. Студенты факультета информатики и систем управления изучают различные виды кодирования, хранение и обработку данных, системное обеспечение, безопасность сетей.

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

  • Онлайн-университет Scillbox проводит как персональное, так и корпоративное обучение. В этой школе курс «PHP-разработчик» разбит на 4 этапа, длится год и стоит около 29 тысяч рублей. Слушатель получает домашнее задание, выполняет его, а затем вместе с преподавателем в видеорежиме разбирает свою работу и исправляет ошибки. Подавать заявку на учебе может человек с любым уровнем знаний.
  • Учебный центр «Специалист» при МГТУ им. Н. Э. Баумана предлагает программы для 5 уровней владения языком PHP: от базовых конструкций до продвинутых техник web-разработок. Преподаватели имеют международные сертификаты ZNE. Полная программа составляет 276 часов и стоит 105 тысяч рублей, отдельные 24-часовые курсы обойдутся в 12–20 тысяч.
  • Loftschool предлагает комплексный курс по PHP, который длится 6 недель и состоит из 12 занятий. В каждый модуль включен видеоурок, вебинар и методическое пособие. Также еженедельно проводится групповая работа с наставником, есть возможность индивидуальных голосовых или текстовых консультаций. Стоимость – около 18 тысяч рублей.

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

Как стать PHP-программистом

Чтобы стать PHP-разработчиком, есть три очевидных пути:

  1. Самостоятельное обучение путем изучения найденных на просторах интернета книг, вебинаров и пр. Этот вариант бесплатный, но очень долгий и отличается низкой эффективностью, т. к. самому сориентироваться в обилии информации и объективно оценить ее актуальность непросто. Я накидал маленькую roadmap PHP-программиста. Там ты поймешь как структурировать знания самому.
  2. Поступление в соответствующий ВУЗ. Крайне нецелесообразный шаг ввиду того, что обучение в вузах растягивают на 4-6 лет, берут за него солидные деньги, не говоря уже о массе сопутствующих расходов, да еще и программы подготовки в среднестатистическом учебном заведении, мягко говоря, неактуальны.
  3. Пройти → онлайн-курсы по PHP – идеальный вариант, поскольку такая система подготовки позволяет приобрести полный объем необходимых знаний в относительно короткий срок, начать в процессе обучения наполнять портфолио и получить подтверждающий сертификат по овладению профессией PHP-developer.

Что такое PHP

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

PHP — это препроцессор гипертекста (HTML).
PHP — это серверный язык программирования.
PHP — это скриптовый, интерпретируемый язык программирования.

Зачем нужен PHP

Поясним каждое из определений и узнаем, в каких задачах будет полезен PHP.

Основная задача PHP — это «оживление» HTML страниц.

Обычные HTML-страницы статичны. Статичность (или неизменность) означает, что после того, как страницу создали и загрузили на сайт, при каждом обращении к этой странице браузер покажет её любому пользователю в неизменном виде.

Но этого не всегда достаточно.

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

  • показать курс валют;
  • подсказать погоду на завтра;
  • вывести счётчик посещений страницы.

Если использовать только HTML, то решить такие задачи не получится. Здесь-то нам и понадобится PHP. Он принимает входящий запрос от веб-сервера, выполняет сценарий и возвращает веб-серверу результат в виде готового HTML-код. Сервер отправляет этот результат в браузер пользователю, который, в свою очередь, отображает её пользователю. После этого видно свежий курс валют, погоду, и что угодно ещё.

РНР позволяет изменять веб-страницу на сервере непосредственно перед тем, как она будет отправлена браузеру. Давайте разберёмся, как это работает. PHP умеет исполнять код — так называемые сценарии. В ходе исполнения PHP может изменить или динамически создать любой HTML-код, который и является результатом исполнения сценария. Затем сервер отправляет этот код браузеру. При этом браузеру не известно, как была сформирована данная страница — статично сверстана верстальщиком, или динамически создана при участии PHP

Это не важно, т.к. браузер всегда работает только с тем, что получил от сервера

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

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

Выполнение сценария также называют его интерпретацией, а сам PHP — интерпретатором.

Вы можете попрактиковаться в создании динамических страниц с помощью PHP в этом тренажёре.

Где используется PHP

Основная сфера применения языка PHP — это веб, то есть сайты, которые мы каждый день посещаем через браузер компьютера или смартфона

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

Практически каждый сайт, который есть в интернете, работает на PHP. Этот язык отлично подходит для любых динамических веб-сайтов, среди которых:

Операторы «кораблей»

Итак, все знают об операторе «космический корабль» с момента выхода PHP 7. Но менее известно, что одновременно с этим релизом был введён целый флот космических кораблей для проведения крупномасштабных операций.

Крошечный космический корабль

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

X-истребители

Если вы хотите добавить огневую мощь к предыдущему флоту, вы можете вызвать истребителей типа X к источнику PHP: . Следующий код вычитает 3 у (в оригинальной статье написано, что оператор прибавит 3 (), но это не так, см. вывод примера ниже — прим. пер.)

Линейный корабль

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

Разве не лучший способ написать так?

Звезда Смерти

Многие из вас бы спросили, а был ли встроен в PHP оператор «звезда смерти», и ответ таков: в данный момент неизвестно. Есть планы на это, но никто никогда не видел реального экземпляра. Мне бы очень хотелось видеть оператор в три строки, так как PHP будет первым, кто будем иметь подобное (и, когда это произойдёт, надеюсь, не с моего счёта спишут стоимость этого оператора).

Почему именно PHP

Компания TIOBE регулярно формирует статистику популярности языков программирования. Больше двадцати лет PHP удерживается в десятке популярных языков программирования.

Популярность языков программирования по версии TIOBE в октябре 2019 года

PHP даёт большую свободу разработчикам — он одинаково хорошо работает на всех популярных системах, включая Windows, Linux и OS X. Разработчики могут выбрать удобный им веб-сервер и базу данных для работы с PHP. Такой широкий выбор возможен благодаря многолетней поддержке сообщества и наличию модулей для работы почти с любым набором программ.

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

Если вы хотите научиться создавать собственные сайты на PHP, пройдите интерактивный курс «Основы PHP» и прочитайте учебник — это станет хорошей базой для того, чтобы выучить язык и стать профессионалом.

Логическое ИЛИ (OR и ||)

Оператор логическое ИЛИ обозначается как или . Он выполняет операцию «логическое ИЛИ» над двумя операндами. Если один или оба операнда имеют истинное значение, он возвращает . Если оба операнда имеют ложные значения, он возвращает . У вас вероятно возник вопрос, зачем же сделали два варианта одного оператора? Смысл двух разных вариантов оператора «логическое ИЛИ» в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор . И так, если один или оба его операнда имеют истинное значение, он возвращает . Если оба операнда возвращают ложные значения, он вернет .

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

Чтобы стало понятнее, как они работают, приведем следующий пример:

<?php

  // Оператор "||" имеет больший приоритет, чем "or"

  // Результат выражения (false || true) будет присвоен переменной $var1
  // Действие приоритета: $var1 = (false || true)
  $var1 = false || true;

  echo $var1; // => 1

  // Сначала переменной присваивается значение false, а затем вычисляется второй операнд
  // Действие приоритета: ($var2 = false) or true
  $var2 = false or true;  

  echo $var2;  // false не выводится

  // ($var3 = 0) or 3
  $var3 = 0 or 3; 

  echo "<br>$var3";   // => 0

?>

Любые операторы сравнения и логические можно комбинировать в более сложные конструкции:

<?php

  $a = (6 == 6) || (4 <= 9);

  // или так
  echo ('c' != 'd') or ('A' === 'A');

?>

Стоит упомянуть еще об одном важном моменте, касательно обоих операторов и. Оператор «логическое ИЛИ» начинает свои вычисления со своего левого операнда, если он возвращает , то правый операнд вычисляться не будет

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

Оператор безопасного null (Nullsafe operator)

Null — сам по себе не очень хорошая штука (даже очень плохая). Когда функция возвращает , то в каждом месте, где идёт её вызов, программист обязан проверить на . И это приводит к ужасным последствиям.

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

Более правильный вариант:

Интересным моментом в использовании nullsafe есть то, что при вызове метода с помощью , параметры будут обработаны только если объект не :

Особенности РНР

Как и у всякого языка программирования, у РНР есть свой синтаксис. Он очень похож на синтаксис языка С или Perl. Программисты, пишущие на этих языках, смогут освоить РНР буквально за несколько дней. Но даже если Вы никогда не программировали, РНР поддастся Вам легко и обеспечит базу для перехода на языки более сложного уровня. Все команды достаточно логичны, а правила просты. Синтаксис включает в себя операторы, разделенные между собой точкой с запятой. Одна из основных ошибок начинающих программистов — отсутствие точки с запятой между операторами. К счастью, ошибки в РНР по умолчанию выдаются на экран (в отличие от CGI, где все ошибки записываются в лог-файл), и найти их при определенной внимательности и опыте не составит большого труда. Тем более что умный интерпретатор подскажет номер строки, в которой произошла ошибка.

Для программирования на РНР Вам понадобится любой текстовый редактор, но для удобства он должен обеспечивать подсветку синтаксиса и нумерацию строк. Я использую CuteHTML, входящий в комплект поставки неплохого FTP-менеджера CuteFTP последних версий. Редактор очень удобный, без лишних ненужных функций, сам встраивается в контекстное меню, не требует инсталляции и имеет все необходимое для программирования. Еще нам понадобится комплект для работы с РНР. Как правило, используется Apache+PHP, хотя это и не обязательно, подходит любой сервер, например IIS Microsoft. Но первый вариант бесплатен и имеет большую поддержку документацией (в том числе на русском языке) и форумами, где можно выяснить любой вопрос. 

Теперь давайте перейдем к делу — напишем наш первый скрипт. Для того чтобы сервер знал, в каком из файлов есть код РНР, его расширение (файла) нужно сделать либо phtml, либо php3, либо php. Строго говоря, может быть назначено любое расширение, но я рекомендую Вам в целях совместимости всегда использовать phtml. Каждая команда в РНР как правило начинается с «<?php» и заканчивается «?>» (здесь и далее без кавычек). Как Вы помните, несколько команд разделяются точкой с запятой. В любом месте скрипта РНР можно поставить комментарий, начинается он с «/*», а заканчивается — «*/» Если комментарий маленький и занимает только одну строчку, можно поставить «//» и таким образом легко закомментировать любую строчку до ее конца. Как обычно, пробелы, символы табуляции и перевод строки просто игнорируются и могут применяться для улучшения читабельности кода РНР.

PHP 7.0

Анонимный класс может использоваться вместо именованного класса:

Когда класс не нужно документировать

Когда класс во время выполнения используется только один раз

Функция целочисленного деления — безопасный способ деления (даже на 0).

Возвращает целочисленный результат деления первого операнда на второй. Если делитель (второй операнд) равен нулю, функция пробрасывает EWARNING и возвращает FALSE.

Добавлен новый оператор объединения с null — «??»

Добавлен новый оператор — spaceship (космический корабль) (<=>)

Используется для оптимизации и упрощения операций сравнения.

Это всего лишь первый шаг к реализации преимуществ более строго типизированного языка программирования в PHP — v0.5.

Добавлена ​​возможность возвращать типы помимо скалярных — классы, включая наследование. Хех, упустив при этом возможность сделать это необязательным (что будет введено в v7.1 :))

Групповые объявления use

В теле функций генераторов разрешен следующий новый синтаксис:

PHP 7 почти вдвое быстрее, чем PHP 5.6.

Значительное сокращение использования памяти

Как видно из диаграмм, PHP 7.0 стал громадным шагом вперед с точки зрения производительности и использования памяти. Для страницы с запросами к базе данных версия 7.0.0 более чем в 3 раза быстрее, чем 5.6 с включенным opcache в 2.7 раза быстрее без opcache! С точки зрения использования памяти разница тоже существенная!

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

и теперь реализуют .

Иерархия :

Внимание! Вы можете реализовать только через и. Синтаксис кодирования Unicode — “\u{xxxxx}”

Синтаксис кодирования Unicode — “\u{xxxxx}”

С этим нововведением глобально зарезервированные слова стали полу-зарезервированными:

За исключением того, что по-прежнему запрещено определять константу класса с именем из-за разрешения имени класса .

План курса

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

развернуть все

свернуть все

1. Подготовка к работе. Установка PHP и настройка веб-сервера XAMPP

  • 1.1 Установка и настройка XAMPP (PHP, MYSQL, APACHE)10:18
  • 1.2 Настройка виртуального хоста (Virtual Host) в XAMPP (опционально)05:59

2. Переменные и константы

  • 2.1 Переменные в PHP06:56
  • 2.2 Тестирование00:15
  • 2.3 Тестирование00:15
  • 2.4 Интерактивное задание02:00
  • 2.5 Интерактивное задание02:00
  • 2.6 Типы переменных и константы03:02
  • 2.7 Тестирование00:15
  • 2.8 Тестирование00:15
  • 2.9 Интерактивное задание03:00

3. Условные операторы и ветвления

  • 3.1 Ветвления. Условные операторы if else06:33
  • 3.2 Тестирование00:15
  • 3.3 Интерактивное задание02:00
  • 3.4 Тестирование01:00
  • 3.5 Ветвления. Условные операторы. Switch07:41
  • 3.6 Тестирование00:15
  • 3.7 Тестирование00:15
  • 3.8 Интерактивное задание02:00

4. Циклы

  • 4.1 Циклы в PHP. Цикл while05:07
  • 4.2 Тестирование00:30
  • 4.3 Интерактивное задание01:00
  • 4.4 Цикл DO WHILE02:40

  • 4.5 Тестирование00:30

  • 4.6 Цикл FOR01:42

  • 4.7 Тестирование00:15

5. Массивы. Функции для работы с массивами

  • 5.1 Массивы в PHP07:52

  • 5.2 Интерактивное задание05:00

  • 5.3 Массивы в PHP. Цикл Foreach04:38

  • 5.4 Интерактивное задание03:00

  • 5.5 Массивы. Способы создания массивов в языке PHP03:45

  • 5.6 Тестирование00:15

  • 5.7 Функции для работы с массивами06:50

  • 5.8 Тестирование00:15

  • 5.9 Тестирование00:15

  • 5.10 Тестирование00:15

  • 5.11 Интерактивное задание03:00

  • 5.12 Интерактивное задание02:00

  • 5.13 Функции implode и explode07:28

  • 5.14 Интерактивное задание02:00

  • 5.15 Тестирование00:15

  • 5.16 Многомерные массивы в PHP08:16

  • 5.17 Многомерные массивы. Способы создания03:46

6. Функции. Создание собственных функций

  • 6.1 Получение данных из HTML формы. Методы GET и POST11:32

  • 6.2 Тестирование00:15

  • 6.3 Тестирование00:30

  • 6.4 Функции для работы со строками. Защита формы сайта09:25

  • 6.5 Тестирование00:15

  • 6.6 Тестирование00:15

  • 6.7 Создание собственных функций. Валидация функций07:37

  • 6.8 Тестирование00:15

  • 6.9 Функции. Взаимодействие функций между собой05:17

7. Язык SQL. Работа с базами данных. SQL запросы

  • 7.1 MySQL и PHPMYADMIN. Начало работы09:57

  • 7.2 Вывод данных из MySQL. Оператор SELECT14:39

  • 7.3 Вставка данных в MySQL. Оператор INSERT05:04

  • 7.4 Обновление данных в таблице MySQL. Оператор UPDATE02:43

  • 7.5 Удаление данных из таблицы MySQL. Оператор DELETE05:52

  • 7.6 Проектирование базы данных. Хранение данных в разных таблицах08:05

  • 7.7 SQL запросы. INNER JOIN05:06

  • 7.8 SQL запросы. LEFT JOIN и RIGHT JOIN04:37

8. Работа с XML и файлами

  • 8.1 Работа с XML. Чтение XML и вывод в браузер в виде массива 07:43

  • 8.2 Работа с XML. Создадим функцию для записи данных из XML в MySQL11:55

  • 8.3 Работа с XML. Запишем данные из XML в базу16:36

  • 8.4 Работа с файлами с помощью PHP16:16

9. Объектно-ориентированное программирование (ООП)

  • 9.1 ООП. Классы, Геттеры и Сеттеры10:54

  • 9.2 ООП. Инкапсуляция04:35

  • 9.3 ООП. Наследование15:09

  • 9.4 ООП. Полиморфизм. Интерфейсы07:35

  • 9.5 ООП. Полиморфизм. Абстрактные классы16:19

Завершение курса — Получение Сертификата

Курс «Fullstack-разработчик на PHP» от Skillbox

Длительность 1 год
Уровень С нуля
Для кого подходит Начинающим разработчикам, IT-специалистам
Формат Видеолекции + домашнее задание + обратная связь от ментора
Гарантии Помощь с трудоустройством + доступ к курсу навсегда
Итоги Диплом + проекты в портфолио
Цена ●  Полная – 181 000 рублей;
●  УСПЕЙ НА СКИДКУ! – 108 600 рублей!
●  Рассрочка — 3 503 рубля в месяц.
Ссылка на курс

Программа курса включает в себя 4 основных курса и курсы на выбор:

Бонусные курсы, которые будут полезны любому айтишнику:

Преподаватели:

Даниил Пилипенко — директор центра по подбору IT-специалистов SymbioWay.

Василий Грудистов — технический директор Qsoft.

Егор Яковишен — setka, старший frontend-разработчик.

Михаил Волков — руководитель отдела обучения Qsoft.

После окончания курса вы сможете:

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

>Мои впечатления: Комплексное обучение для всех, кому интересно создание сайтов. Уровень вашей подготовки в начале обучения не важен, курс начнётся с азов программирования — изучения языка PHP. Умение пользоваться фреймворками, верстать сайты и разбираться в технической документации — базовые навыки для будущего профессионала. Поддержка с трудоустройством программистом поможет быстро начать карьеру fullstack-специалиста. Записывайтесь скорее!

Получить скидку →

Общий вывод: достойных курсов по PHP сейчас много. Вы найдете здесь короткие курсы PHP разработчиков и протяженные по времени, с возможностью оплаты в рассрочку,  со строгим дедлайном и неограниченным временем обучения. Есть даже бесплатный вариант изучения PHP. Так что возможности изучать разработку сайтов PHP и получить новую профессию есть у всех, нужно лишь только ваше желание. Дерзайте! И все у вас получится!

Объединения типов (Union Types 2.0)

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

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

Теперь же, можно прописать тип (или любой другой) явно, чтобы обеспечить корректность работы модуля:

А также, код становится немного чище, так как мы можем избавится от излишних комментариев.

Типы-объединения имеют синтаксис и могут быть использованы во всех местах, где можно прописать type-hints с некоторыми оговорками:

  • Тип не может быть частью объединения.
  • Чтобы обозначить отсутствие результата, можно объявить «Nullable union type», который имеет следующий синтаксис: .
  • Тип не может быть использован вне объединения. Вместо него стоит использовать .
  • Существует также псевдотип , который по историческим причинам уже используется некоторыми функциями в php. С другой стороны, не существует тип , так как он нигде не использовался ранее.

Типы полей класса инвариантны, и не могут быть изменены при наследовании.
А вот с методами всё немного интересней:

  1. Параметры методов можно расширить, но нельзя сузить.
  2. Возвращаемые типы можно сузить, но нельзя расширить.

Вот как это выглядит в коде:

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

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

Так, если переданный тип не является частью объединения, то действуют следующие приоритеты:

  1. int;
  2. float;
  3. string;
  4. bool;

Так вот, будет перебираться этот список с типами, и для каждого проверяться: Если тип существует в объединении, и значение может быть приведёно к нему в соответствии с семантикой PHP, то так и будет сделано. Иначе пробуем следующий тип.

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

Таблица неявного приведения типов:

Original type 1st try 2nd try 3rd try

Типы полей и ссылки

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector