Результат статичного метода != резульату идентичной функции.

  • Автор темы Автор темы bosh
  • Дата начала Дата начала

bosh

Новичок
Результат статичного метода != резульату идентичной функции.

Есть вот такой метод
PHP:
class request{
function getPathInfo() {
        if (isset($_SERVER['PATH_INFO'])) {
        	echo $_SERVER['PATH_INFO'];
                return $_SERVER['PATH_INFO'];
        }
    }
}

И идентичная функция вне класса, т.е. уже не метод а функция.
Её вызов:

1.
echo "+-";
echo $request->getPathInfo();
echo "-+";

2.
echo "+-";
echo getPathInfo();
echo "-+";

Достоверно известно $_SERVER['PATH_INFO']='/Content'
Результаты работы. 1-й:
+-/Content-+
Второй
+-/Content/Сontent-+

Мне видица что второй вариант правильный.
Отчего так работает первый не понимаю вообще.

Да. Ещё если интересно есть третий вариант:
echo "+-";
$request->getPathInfo();
echo "-+";
Выдает
+-/Content-+
Что собственно правильно.

Отчего так работает 1. ?

PHP/5.0.4
 
Чем отличается первый вызов от третьего?
Где вызов статического метода?
 
Спасибо за конструктивные советы.
Ещё предложения кроме убить меня апстенку есть?
 
Первый от третьего отличается наличием echo во второй строчке.
Светасмирнова - это пять :)

4.
echo "+-";
echo request::getPathInfo();
echo "-+";

+-/Content/Сontent-+

Причины сего мне искать не хочется.

-~{}~ 11.01.06 01:47:

кстати статичный метод это вроде бы тот который не используется другие поля/методы данного класса.
А вызывать его можно как инициализируя класс так и нет.
Я ничего в определениях не путаю?
 
Ещё предложения кроме убить меня апстенку есть
Много, но все не в тему. Твой случай граничит с магией и волшебством. Если в них не веришь, ищи ошибки. Ссылку я дал.

-~{}~ 11.01.06 01:49:

кстати статичный метод...
про ключевое слово static забыл ты
 
да нет. Мне собственно казалось что ключевое слово static тут совсем не при делах.

Спишем на магию и незадокументированые возможности пхп. :)
 
Приучись приводить полный код единым блоком, который можно сразу скопировать и выполнить чтобы избежать разности исполняемого кода. Например не видно new request.
 
Сверху