Extension talk:PhpTags Wiki

From MediaWiki.org
Jump to navigation Jump to search

FULLNAME or FULL_NAME ?[edit]

На странице 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)