Php - получить имя родительского скрипта

Хорошо, так как есть общий интерес, вот быстрая версия:

Console.WriteLine (one)

Это будет использовать перегрузку WriteLine(object), которая, в свою очередь, выполнит object.ToString(), переопределенный в One - следовательно, выход ToString override

Console.WriteLine (one.ToString ())

Это будет выглядеть на One и посмотрите, какие методы имеют вновь объявленные методы - переопределение ограничений. Существует только один такой метод, который применим - тот, у которого есть необязательный параметр.

Console.WriteLine (one.ToString («foo»))

То же самое, но это означает, что это выполняется, используя значение по умолчанию, поэтому компилятор не должен использовать значение по умолчанию, следовательно ToString with optional parameter foo

Console.WriteLine (два)

Опять же, это вызовет виртуальный метод object.ToString() из WriteLine(object). Этот метод не был переопределен, поэтому используется реализация по умолчанию, возвращающая имя типа, что приводит к выводу ConsoleApplication1.Test2.

Console.WriteLine (two.ToString ())

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

Метод без параметров считается «лучшим» кандидатом, потому что компилятор предпочитает вызывать метод, который doesn Не нужно заполнять какие-либо дополнительные параметры. Следовательно, вывод ToString new

Console.WriteLine (two.ToString («bar»))

Опять же, компилятор просматривает все метод, объявленный в Two, который не является , переопределяя виртуальные методы. В этом случае существует два таких метода - но беззадачный не применим, оставив только тот, у которого есть необязательный параметр. Компилятору не нужно использовать значение по умолчанию необязательного параметра здесь, так как у него есть аргумент в любом случае ... так что выход ToString with optional parameter bar

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

13
задан Max Frai 23 August 2009 в 13:52
поделиться

2 ответа

print $_SERVER["SCRIPT_FILENAME"];
14
ответ дан 1 December 2019 в 07:52
поделиться

Я не думаю, что вы сможете это сделать: магическая константа __ FILE __ указывает, в каком файле она записана; и это все.

Если вы хотите знать, какой сценарий PHP был первоначально вызван (например, какой URL был запрошен), возможно, вам повезет больше, если вы посмотрите на суперглобал $ _ SERVER : он содержит много информация, в том числе некоторая, которая поможет вам (например, SCRIPT_FILENAME или SCRIPT_NAME , например) ; -)

1
ответ дан 1 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: