Extension talk:PhpTags Wiki

FULLNAME or FULL_NAME ?
На странице Extension:PhpTags Wiki/Reference в классе WTitle указана константа FULL_NAME, а в реальности работает FULLNAME. Другие идентификаторы не проверял. --StasR (talk) 15:12, 16 November 2015 (UTC)
 * Скорее всего вы используете не самую последнюю версию. Я их переименовывал. Лучше всего скачать master и использовать его. Там пока нет особой привязке к версии медиавики, так что все должно работать.   Если не будет, то шлите ошибки, буду исправлять для конкретной версии MW.
 * Pastakhov (talk) 15:44, 16 November 2015 (UTC)
 * Переключился на мастер, не помогло. Тест на той же страничке foxway. --StasR (talk) 16:19, 16 November 2015 (UTC)
 * Да, странно. У меня в исходниках FULL_NAME :-) ладно, используйте то, что работает. я сделаю рабочим правильный FULL_NAME но и FULLNAME оставлю для совместимости. --Pastakhov (talk) 16:35, 16 November 2015 (UTC)

А, я понял в чем причина. Видимо я зря так сделал и раз сам запутался.

WPage::TITLE возвращает объект WTitle текущей страницы. А дальше WTitle::FULLNAME это на самом деле обращение к свойству WTitle->fullName. Такое поведение реализовано в настоящем PHP и я перенес это в PhpTags, хотя нужно еще раз проверить...

А константа FULL_NAME вызывается как 'WTitle::FULL_NAME'. Я поэтому и переименовывал константы, чтобы они отличались от свойств.

В итоге ваш WPage::TITLE::FULLNAME интерпретируется как:

WPage::TITLE->fullName; где WPage::TITLE это эквивалент new WTitle; --Pastakhov (talk) 17:01, 16 November 2015 (UTC)

Идея была такой, что константы возвращают значения для текущей страницы.

Объект new WTitle также создается для текущей страницы.

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

$title = new WTitle( 'My page' ); echo $title->fullName;

Если я не ошибаюсь, в пхп не будет ошибкой использовать статический вызов для нестатического свойства, поэтому $title::fullName тоже работает. И конечно PHP игнорирует регистры везде кроме констант. поэтому $title::FULLNAME это тоже самое, что и $title->fullName;

Pastakhov (talk) 17:13, 16 November 2015 (UTC)
 * Спасибо :-) --StasR (talk) 17:29, 16 November 2015 (UTC)