Номер телефона

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

Как установить, из этого самого ли файла PHP произошел вызов функции?

Допустим, у нас имеется файл РНР с именем first.php. В нем имеется следующая конструкция:

<?php
include $_SERVER['DOCUMENT_ROOT']. ‘/ … path … /’. second.php;


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

Иногда при работе скриптов РНР нужно знать, из того же самого файла (скрипта) произошел вызов некоей функции, или из другого. Применительно к данной ситуации – как выяснить, из какого именно файла произошел вызов функции: из first.php или из second.php ? Или, похожая проблема: требуется знать, какой именно скрипт записал данные (в текстовый файл) или вывел данные клиенту (например, на экран браузера).

Как это узнать?

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

  • __FILE__ // Полный путь к файлу second.php
  • $_SERVER['PHP_SELF'] // Относительный (начиная от корня сайта / ) путь к файлу first.php

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

  1. if(stripos(str_replace('\\', '/', __FILE__), $_SERVER['PHP_SELF']) !== FALSE){
  2. // Работал скрипт из файла second.php
  3. }else{
  4. // Работал скрипт из файла first.php
  5. }

Впрочем, возможно, в РНР7 есть какие-то более адекватные способы для того, чтобы узнать, какой именно скрипт работал с той или иной функцией. Однако, и этот способ - вполне рабочий и корректный.


Комментарии:
Всего комментариев:0
Пожалуйста, не забудьте ознакомиться с правилами оставления комментариев.



Подписаться на комментарии на этой странице

Мы можем выполнить

Другие услуги
Интересная и полезная
информация
НАПИШИТЕ НАМ
Яндекс.Метрика
Номер телефона
© Copyright Все права защищены 2013-