20 вещей, которые отличают PHP-программиста от обезьянки
PHP — самый популярный язык для написания кода серверной части. Одной и той же цели на нем можно достичь несколькими путями: можно спроектировать красивую и легко поддерживаемую систему, а можно быстро слепить вместе куски кода со Stack Overflow, не забивая себе чересчур голову такими вещами, как правила проектирования и читаемость кода.
Конечно, даже если вы пока еще не гуру разработки, вы все равно захотите писать код, из-за которого окружающим не захочется плакать. Tproger вас выручит — в этой статье собрано 20 советов, каждый из которых поможет вам улучшить читаемость кода и за следование которым вам потом скажут спасибо. А в перспективе прилежное следование этим советам поможет вам стать ближе к статусу опытного и внимательно относящегося к деталям разработчика.
Отделяйте файлы с параметрами
Нет ни одной достаточно веской причины, которая бы оправдала хранение настроек в одном файле со скриптом. Всегда создавайте отдельный файл и в самом начале скрипта его подключайте. Вы поймете, как это важно, когда вам придется редактировать кучу файлов из-за изменения одного параметра. Это ведь совсем несложно:
Комментарии — ваши друзья
Конечно, если вы спешите или набиваете код на волне вдохновения, становится как-то не до комментариев. Но код, написанный давно, понимать трудно — даже если писали его вы. Лучше помогите себе парой комментариев в ключевых местах, чтобы потом сократить время на понимание очередного скрипта.
Правда, просто? Еще стоит обратить внимание на PHPDoc.
Грамотно форматируйте код
Нет ничего хуже огромной стены кода, автор которого явно не знал о существовании кнопки Tab. Не спасут даже комментарии — отступы придумали для того, чтобы логически отделять друг от друга фрагменты кода. А использование или неиспользование отступов много говорит о вас как о программисте. Вот этот код отформатирован неправильно:
А вот это — тот же самый код, но с правильным форматированием:
Если вы хотите точно знать, какой способ форматирования кода правильный — почитайте PSR-ы.
Давайте переменным понятные имена
Конечно, к единому мнению по этому вопросу прийти нельзя. camelCase или under_score? Нужна ли Венгерская нотация? Важно здесь одно: раз и навсегда определитесь, что вам ближе. А даже если вам и захочется изменить стиль, то пожалуйста, не делайте это посреди проекта! Разные варианты именования переменных в одном проекте или, что еще хуже, в одном файле — это ужасно. И никаких магических чисел! Не поленитесь использовать константы.
Инициализируйте переменные
Конечно, PHP автоматически создает переменные при попытке к ним обратиться. Но вам не кажется, что пользоваться этой особенностью довольно рискованно? Хорошей практикой считается всегда инициализировать переменные еще перед первым использованием. Это сделает код понятнее и поможет убедиться, что вы не обращаетесь случайно к неинициализированной переменной.
Булева переменная ложна, иначе — истинна
Зачем это? Представьте, что вы проверяете данные перед запросом к базе. Если по какой-то причине блок if вдруг не выполнится, то значение переменной останется false — так вы подстрахуете себя от попадания в базу ошибочных данных. В коде порой приходится иметь дело с конфиденциальными данными, так что лучше сначала исходить из того, что все данные ошибочны, пока не доказано обратное. Это правило практически написано кровью.
Кстати, лучше проверять, являются ли данные такими, как надо нам, чем являются ли они такими, как нам не надо.
Используйте кавычки, когда обращаетесь к элементам массива
В коде разных разработчиков можно увидеть два варианта доступа к элементам ассоциативного массива:
Используйте запятые, чтобы обратиться к нескольким строкам в одном вызове
Если вам надо, например, в одном вызове функции обратиться к значению переменной и к строке, лучше используйте запятые, а не точки. Почему? Точка — оператор конкатенации строк, эта операция будет выполняться медленнее. Доказательство.
А вот так — не надо:
Пользуйтесь тернарными операторами
Если у вас в коде какое-то очень простое сравнение, желательно использовать тернарный оператор, чтобы не растягивать простой код на несколько строк. Вот так может выглядеть ваш простой if :
Но можно записать его и так:
Обобщенно тернарный оператор работает следующим образом:
Используйте для сравнения с булевыми значениями строгое сравнение
Используйте инкремент и декремент
Если вам нужно просто увеличить или уменьшить на 1 значение переменной, ни к чему писать эту громоздкую конструкцию:
Куда лаконичнее такой вариант:
Используйте сокращенные операторы присваивания
Если переменную надо увеличить или уменьшить на число, не равное 1, то и в этом случае код можно сократить. Например, у вас в коде может быть такое:
А используя сокращенные операторы, этот же код можно будет записать так:
Со строками, кстати, это тоже работает. Если понадобится присоединить к существующей строке какую-то часть, сделайте это так:
Создайте отдельную функцию для var_dump
Иногда бывает нужно во время активной отладки часто выводить прямо на страницу значение какой-то переменной. Конечно, лучше лишний раз так не делать, но если все-таки нужно, то имеет смысл себе помочь. Функция может выглядеть так:
Тэг pre используется, чтобы сделать значение более читаемым. Кстати, такое странное имя функции дано неслучайно — оно короткое, хоть и неочевидное. Набрать ее название будет быстро. Только потом не забудьте убрать эту функцию, когда будете подчищать код в конце разработки.
Но лучше всего забыть этот совет и научиться пользоваться XDebug.
Пользуйтесь константами
Если у вас есть переменная, значение которой изменять не стоит, имеет смысл использовать вместо нее константу. Константы можно использовать, чтобы хранить в них пути, сообщения об ошибках и так далее. Имя константам стоит давать капсом — так их будет просто отличить, и вы будете уверены, что вызываете то, что нужно.
Пользователи могут руками заменить значения в адресной строке на любые произвольные и доставить вам немало хлопот.
Используйте объекты, а не функции
PHP — все-таки в том числе и объектно-ориентированный язык. Если вы работаете над большим проектом, сотни строк функционального кода вам точно быстро надоедят. А если вам нужно хранить множество однотипных параметров, то тем более задумайтесь об использовании соответствующего класса.
Вызывайте методы цепочками
Если вы подряд вызываете несколько методов одного объекта, имеет смысл сократить код, не выписывая каждый раз название этого объекта. Если есть вот такой класс:
… то обращаться к его методам можно так:
Чтобы лучше понять, как это работает и при каких обстоятельствах можно это пользоваться, почитайте статью.
Не повторяйте себя
Всегда оборачивайте в функцию код, который используете чаще одного-двух раз. Если этого не делать, проект распухнет и будет состоять из кучи однотипных строчек.
14–30 сентября, Онлайн, Беcплатно
Почитайте о методах DRY и WET.
Стремитесь к слабой связанности и сильной сцепленности
Связанность — это способ проектирования проекта, когда изменение одного компонента требует изменения другого. Другими словами, если вы измените одну функцию, придется ли менять другую? Чем свободнее связь, тем проще будет менять компоненты, не перелопачивая половину кода.
Сцепленность же — это когда вместе отдельные части образуют значимую единицу. У вас есть одна функция или метод на весь проект, которая делает вообще все возможное и невозможное, или есть много функций или методов, каждый из которых выполняет свой участок работы? Особенно это касается ООП. Дробите методы, магические методы на десятки и сотни строк недопустимы.
Как опытный программист, вы должны стремиться к тому, чтобы компоненты мало зависели друг от друга и не брали на себя слишком много работы. Такой код будет куда проще расширять и поддерживать. Создавая функцию, задумывайтесь о том, насколько она удобна для использования в будущих проектах.
Проиллюстрировать этот совет можно так. Возьмем этот код:
Главный минус этой функции в том, что она сама осуществляет проверку данных, а потом выводит на экран значение. Да и такое поведение не совсем очевидно — согласитесь, столь избирательно работающее сложение вам вряд ли еще где-то повторно понадобится. А если вам еще и захочется поменять сообщение для вывода? Этот код лучше переписать так:
Теперь каждая функция выполняет только свою работу: add складывает числа, result выводит результат.
9 PHP функций, которые нужно знать всем
Сколько бы мы не использовали PHP, всё равно всплывают некоторые функции, о которых мы даже не слышали. Некоторые из них были бы нам очень полезны. Я создал небольшой список полезных функций, которые должны быть в арсенале каждого PHP программиста.
1. Создание функций с переменным числом аргументов
Скорее всего, вы уже знаете, что PHP позволяет нам создавать функции с необязательными аргументами. Сейчас я покажу функцию, в которой число аргументов может меняться от случая к случаю.
Но для начала, вспомним как мы создаём функции обычным образом:
Теперь посмотрим на то, как можно написать функцию с неограниченным количеством аргументов. Для этого будет использовать метод func_get_args():
2. Используем Glob() для поиска файлов
Часто названия функций говорят сами за себя. Такого нельзя сказать о функции glob().
Если не вдаваться в подробности, её функциональность схожа с методом scandir(). Она позволяет найти необходимый файл по шаблону:
Для нахождения файлов нескольких типов надо писать так:
Так же можно в шаблоне указать путь:
Для того чтобы получить полный путь к документу используйте метод realpath():
3. Информация об используемой памяти
Если вы будете отслеживать количество памяти, которое съедается на работу ваших скриптов то, наверное, чаще будете их оптимизировать.
В PHP существует мощный инструмент отслеживания используемой памяти. В разных частях скрипта нагрузки могут быть разные. Для того чтобы получить значение используемой памяти в данный момент, нам следует использовать метод memory_get_usage(). Для фиксации максимального количества используемой памяти используем memory_get_peak_usage()
4. Информация о процессоре
Для этого необходимо использовать метод getrusage(). Но учтите, что на Windows эта функция работать не будет.
Картина, изложенная выше, будет понятно тем, у кого есть опыт в системном администрировании. Для всех остальных предлагаем расшифровку:
Для того чтобы узнать какие ресурсы вашего процессора используются скриптом, вам необходимо значение ‘user time’ (время работы в пользовательском режиме) и ’system time’ (время работы в привилегированном режиме). Вы можете получить результат как в секундах, так и в микросекундах. Для того чтобы превратить общее количество секунд в десятичное число, вам необходимо разделить значение микросекунд на 1 миллион и добавить к значению секунд.
Запутанно как-то. Вот пример:
Хотя выполнение скрипта заняло около 3-х секунд, процессор не был сильно нагружен. Дело в том, что при вызове (sleep) скрипт практически не потребляет ресурсов процессора. Вообще существует множество задач, которые занимают значительное время, но при этом не используют процессор. К примеру, ожидание операций связанных с диском. Так что вы не всегда используете процессорное время в своих скриптах.
Работа скрипта заняла 1.4 секунды процессорного времени. В данном случае, время системных вызовов вообще низкое.
Время работы в привилегированном режиме (System Time) – это время, которое процессор затрачивает на выполнение системных запросов к ядру от имени программы. Пример:
Теперь системного времени затратилось намного больше, чем в прошлом примере. Всё благодаря методу microtime(), который использует ресурсы системы.
Однако следует отметить, что выведенное время может быть не точным, т.к. в данный момент времени ресурсы процессора используются и другими программами, что в результате может дать небольшую погрешность.
5. Магические константы
В PHP существует множество магических констант, таких как номер текущей строки (__LINE__), путь к файлу (__FILE__), путь к каталогу (__DIR__), имя функции (__FUNCTION__), имя класса (__CLASS__), имя метода (__METHOD__) и пространства имён (__NAMESPACE__).
Все мы их рассматривать не будем. Посмотрим только лишь парочку:
Используйте __LINE__ при отладке скриптов:
6. Генерирование уникальных ID
Бывают такие моменты, когда вам надо сгенерировать уникальную строку. Множество раз я видел, что для решения этой задачи используют функцию md5():
Но на самом деле для этих целей в PHP есть специальная функция uniqid()
Невооружённым взглядом можно заметить, что первые символы мягко говоря схожи… Так происходит из-за того, что данный метод использует время сервера для генерации символов. Это даже полезно, т.к. все сгенерированные значения получаются в алфавитном порядке, что даёт возможность быстро их сортировать.
Для того чтобы уменьшить шансы получения дубликата, мы можем добавить префикс или использовать второй параметр (увеличит количество символов):
Этот метод генерирует строки размером меньше, чем md5, тем самым вы сможете сэкономить место.
7. Сериализация
Вам когда-нибудь приходилось хранить комплексные данные в базе или в файле? Для того чтобы сконвертировать объект в строку в PHP предусмотрена специальная функция.
Вообще говоря, этих методов 2: serialize() и unserialize()
Вот так вот работают эти функции. Однако из-за бурного роста популярности JSON, в PHP 5.2 были добавлены 2 метода json_encode() и json_decode(). Их работа схожа с serialize():
Этот вариант более компактный и совместимый с другими языками, такими как JavaScript. Однако при работе с очень навороченными объектами может возникнуть потеря данных.
8. Сжатие строк
Кода мы говорим о сжатии, то на ум сразу же приходят архивные файлы в формате ZIP. PHP предоставляет возможность сжатия длинных строк без всяких файлов.
В следующем примере продемонстрируем работу функций gzcompress() и gzuncompress():
В наших силах уменьшить объём текста на 50%. В этих же целях можно использовать методы gzencode() и gzdecode(), которые используют другой алгоритм сжатия.
9. Выполнить перед завершением
В PHP существует функция register_shutdown_function(), которая позволит вам выполнить какой-то код перед завершением работы скрипта.
Допустим, вы хотите узнать какую-то информацию… Время работы скрипта:
На первый взгляд это может показаться тривиальной задачей. Для этих целей, вы можете поместить код в конце файла. Однако если перед этим где-то сработает функция exit(), этот код никогда не сработает. Так же, он не сработает если на странице будет ошибка или пользователь прервёт загрузку страницы (нажав на соответствующую кнопку в своём браузере);
При использовании метода register_shutdown_function() код выполнится в любом случае:
Вывод
PHP это целая планета, которая не перестаёт нас удивлять своим содержимым. А что думаете вы о данных функциях?
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.net.tutsplus.com/tutorials/php/9-useful-php-functions-and-features-you-need-to-know/
Перевел: Станислав Протасевич
Урок создан: 4 Марта 2011
Просмотров: 95344
Правила перепечатки
5 последних уроков рубрики «PHP»
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Полезные функции php которые могут пригодится
Есть у меня заметка о полезных командах в терминале Linux, вот решил завести еще заметку о полезных функций php, буду ее постоянно пополнять.
Вот так можно вычислить разницу во времени, а именно сколько дней, часов, минут, секунд между двух промежутками времени и вывести в удобном формате.
На выводе мы получим 02:58:00, если в формате вывода указать %i то получим минуты без ведущего нуля.
Перевести секунды в часы минуты секунды можно при помощи gmdate
На выходе получим 00:16:39
Если нам нужно сохранить полученные данные для дальнейшего импорта можно использовать функцию var_export, допустим у нас есть массив $country, записать его в файл можно следующим образом
Для использования подключаем файл require или include и пользуемся $country.
Можно еще так
Тогда при подключении сразу будет возвращен массив.
Так же можно использовать serialize и unserialize
Записать данные в файл
Получить
Сортировка массива по значениям ключей
php 7.1
php 5.6
Перевод строчного времени 14 января 2019 или 14 янв 2019 если убрать пробелы 14января2019 то работать тоже будет в Unix Time при помощи ICU
Сделать из многомерного массива одномерный в одну строку
Поиск в многомерном массиве
Но имейте ввиду: array_column создаст новый массив из ключей column и если у вас заданные ключи, то данный метод может вам вернет не то что вы ожидаете.
Получить множественные вхождения needle в многомерном массиве, просто меняем местами параметры
Провел пару тестов, все равно самый быстрый поиск в многомерном массиве из 10к элементов это foreach, так же пробовал array_column выносить в отдельну переменную скорости это не прибавляет
Результаты тестов
php 7.1
php 7.2
php 5.6
Для больших массивов используйте foreach
Функции в PHP
Если говорить простым языком, то функция — это блок кода, который может быть именован и вызван повторно. Иногда функцию ещё называют подпрограммой. Мы привыкли, что обычной переменной можно присвоить число, строку или массив, а затем получить его обратно, обратившись к значению по имени переменной. Функции устроены похожим образом. Это тоже своего рода переменная, только вместо строки или числа в ней хранится блок кода, который вызывается при использовании этой «переменной».
Функция — очень мощный инструмент повторного использования кода. Создав свою функцию и записав туда необходимый код, вы сможете вызывать и использовать его столько раз, сколько необходимо. В противном случае пришлось бы копировать и вставлять фрагмент кода каждый раз, когда он понадобится.
Чтобы упростить себе работу, мы можем оформить в виде функции некоторую часть кода, которая используется в сценарии несколько раз. Затем, вместо копирования и вставки этой части кода, будет достаточно только вызывать эту функцию, как если бы мы обращались к переменной.
Разделяют два типа функций — встроенные и пользовательские.
Встроенные функции — это функции, которые за нас уже написали создатели языка программирования, и мы можем просто брать их и использовать. В PHP существуют тысячи готовых функций на все случаи жизни!
Одна из таких, уже очень хорошо знакомых нам функций — это функция, которая выводит переданный ей текст на экран — print()
Пользовательские функции программист создает самостоятельно. Эти функции, как правило, используются только внутри одного проекта или, даже, сценария.
Анатомия функций
Как и с обычными переменными, работа с функциями состоит из их объявления и использования.
Перед тем, как использовать новую функцию, следует её объявить:
Пояснить все составные части функции проще всего на примере.
Допустим, на своём сайте мы хотим показывать, является ли выбранный пользователем год високосным. Для этого напишем функцию, в которую передаётся год. В результате работы функции мы хотим получить значение «истина», если год високосный, и «ложь» — если нет.
Определение такой функции:
Пример использования функции:
Потренироваться использовать функции в PHP можно в этом тренажёре.
Аргументы функции и область видимости
Наша функция умеет вычислять, является ли переданный год високосным.
Важно понимать, что функция — это как бы программа в программе. Это значит, что внутри такой функции не будут доступны переменные, которые определялись за её пределами. Чтобы передать внутрь функции информацию извне, нужно использовать аргументы функции.
Аргументы необходимы, так как функция «не видит» переменные, определённые за её границами. Поэтому нужные переменные надо передавать ей явно.
Верно и обратное — переменные, определённые внутри функции, не будут доступны извне. Такие переменные называются локальными, потому что они локальны по отношению к функции.
В отличие от аргументов, которых может быть несколько, вернуть во внешний код функция может только одно значение — с помощью инструкции «return» (возврат). Возвращаемое значение называют результатом работы функции.
9 полезных функций PHP и особенностей, которые нужно знать
Дата публикации: 2010-07-12
От Автора:
Даже после многолетнего использования PHP мы натыкаемся на функции и особенности, о которых не знали. Некоторые из них могут быть очень полезными, но мало используемыми. Не все из нас читали руководство и справочник функций от корки до корки!
1. Функции с произвольным количеством параметров
Вы могли уже узнать, что PHP позволяет определять функции с необязательными параметрами. Однако существует способ, разрешающий совершенно произвольное количество параметров у функции.
Для начала, вот пример исключительно с необязательными параметрами:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Теперь давайте посмотрим, как можно создать функцию, которая принимает любое количество параметров. На этот раз мы собираемся использовать func_get_args():
2. Использование Glob() для поиска файлов
У многих функций PHP длинные и содержательные имена. Однако будет трудно сказать, что делает функция с именем glob(), если вы уже откуда-то не знакомы с этим термином.
Думайте о ней как о более усовершенствованной версии функции scandir(). Она позволяет искать файлы, используя шаблоны.
Вы можете задавать несколько видов файлов, как здесь:
Обратите внимание, что файлы в действительности будут возвращаться с путями, зависящими от вашего запроса:
Если вам нужен полный путь к каждому файлу, просто вызовите функцию realpath() для массива возвращенных значений:
3. Сведения об использовании памяти
Обратив внимание на использование памяти своих скриптов, вы, возможно, сможете больше оптимизировать код.
PHP есть «сборщик мусора» (программа очистки памяти) и довольно сложный диспетчер памяти. Количество памяти, используемой вашим скриптом, может увеличиваться и уменьшаться в процессе его выполнения. Получить сведения о текущем использовании памяти можно, используя функцию memory_get_usage(), а чтобы узнать о наибольшем объеме памяти в любой точке, можно воспользоваться функцией memory_get_peak_usage().
4. Сведения об использовании CPU
Для этого мы будем пользоваться функцией getrusage(). Помните о том, что она недоступна на платформе Windows.
Может выглядеть таинственно, пока у вас не будет навыков в администрировании системы. Вот объяснение каждого значения (учить это наизусть не нужно):
ru_oublock: количество операций блочной записи
ru_inblock: количество операций блочного чтения
ru_msgsnd: количество отправленных сообщений
ru_msgrcv: количество принятых сообщений
ru_maxrss: максимальный размер невыгружаемого набора
ru_ixrss: общий объем разделяемой памяти
ru_idrss: общий объем неразделяемых данных
ru_minflt: количество используемых страниц памяти
ru_majflt: количество ошибок отсутствия страниц
ru_nsignals: количество принятых сигналов
ru_nvcsw: количество переключений контекста процессом
ru_nivcsw: количество принудительных переключений контекста
ru_nswap: количество обращений к диску при подкачке страниц
ru_utime.tv_usec: время работы в пользовательском режиме (микросекунды)
ru_utime.tv_sec: время работы в пользовательском режиме (секунды)
ru_stime.tv_usec: время работы в привилегированном режиме (микросекунды)
ru_stime.tv_sec: время работы в привилегированном режиме (секунды)
Чтобы узнать, какие ресурсы CPU потребляет скрипт, нам нужно посмотреть на значения ‘user time’ (время работы в пользовательском режиме) и ‘system time’ (время работы в привилегированном режиме). По умолчанию величины секунд и миллисекунд представляются раздельно. Таким образом, вы можете разделить значение микросекунд на 1 миллион и добавить к значению секунд, чтобы вычислить общее количество секунд как десятичное число.
Хотя выполнение скрипта заняло примерно 3 секунды, использование CPU было очень-очень низким. Это происходит потому, что во время ожидания (sleep) скрипт фактически не потребляет ресурсов CPU. Существует множество других задач, которые могут занять реальное время, но при этом не использовать время CPU, например ожидание дисковой операции. Так что, как вы видите, использование CPU и действительная длительность времени исполнения — не всегда одно и то же.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Этот скрипт использовал примерно 1,4 секунды времени CPU, и почти все время в пользовательском режиме, так как системных вызовов не было.
Время работы в привилегированном режиме (System Time) – это количество времени, которое CPU тратит на выполнение системных запросов к ядру от имени программы. Вот пример этого:
Теперь у нас используется довольно много времени привилегированного режима. Это происходит по тому, что скрипт много раз вызывает функцию microtime(), которая, чтобы получить данные о времени, выполняет запросы к ядру операционной системы.
Еще вы можете заметить, что цифры соответствуют 3 секундам неточно. Это потому что на сервере также, возможно, выполнялись и другие процессы, так что скрипт не использовал 100% CPU в течение всех 3 секунд.
5. Предопределенные, или «волшебные» константы
PHP предусматривает полезные «волшебные» константы для выборки текущего номера строки (__LINE__), пути файла (__FILE__), пути каталога (__DIR__), имени функции (__FUNCTION__), имени класса (__CLASS__), имени метода (__METHOD__) и пространства имен (__NAMESPACE__).
В этой статье мы не собираемся охватывать каждую из них, но я покажу вам некоторые случаи их использования.
Когда в дело включаются другие скрипты, хорошая идея — использование константы __FILE__ (или __DIR__ в версии PHP 5.3):


