Příručka:Title.php
Soubor MediaWiki: Title.php | |
---|---|
Lokalita: | includes/ |
Zdrojový kód: | master • 1.40.1 • 1.39.5 • 1.35.13 |
Třídy: | Title |
Třída Title
softwaru MediaWiki implementuje rozhraní LinkTarget a IDBAccessObject.
Představuje názvy článků, které se používají k mnoha účelům, včetně:
- jako lidsky čitelný textový název článku
- v adrese URL použité pro přístup k článku
- wikitextový odkaz na článek
- klíč do databáze článků
Třída je vytvořena pomocí jednoho z těchto formátů.
Po vytvoření instance lze titul získat v jiných formátech nebo se lze dotázat na jeho atributy.
Title
je zamýšlen jako neměnná třída "hodnoty", takže neexistují žádné mutátorové funkce.[1][2]
Chcete-li vytvořit instanci Title
, zavolejte jednu ze statických faktory metod:
Title::newFromDBKey( $key )
Title::newFromID( ($id, $flags=0) )
Title::newFromText( $text, $defaultNamespace=NS_MAIN )
Title::newFromURL( $url )
- Toto není funkce, kterou chcete. Použijte Title::newFromText().Title::newFromIDs( $ids )
- vrátí pole titulkůTitle::newFromRedirect( $text )
Title::makeTitleSafe( $ns, $title, $fragment= '', $interwiki= '')
- vytvoří nový titul z indexu jmenného prostoru a klíče DB. Při chybě vrátí hodnotu null.Title::newFromRedirectArray( $text )
Title::newFromRedirectRecurse( $text )
Title::newFromRow( $row )
Title::newMainPage()
Po vytvoření instance lze použít jiné nestatické metody přístupového objektu, například getText()
, getDBKey()
, getNamespace()
atd.
Pokud máte objekt Title, můžete získat:
- Article objekt s použitím
Article::newFromTitle ( $title, IContextSource $context )
- WikiPage objekt s použitím
WikiPage::factory ( Title $title )
Tato třída může načítat různé druhy dat z databáze. Činí tak však neefektivně. Zvažte místo toho použití objektu TitleValue . TitleValue je lehčí a nespoléhá na globální stav nebo databázi.
Struktura názvu
Název se skládá z volitelné předpony Interwiki (například "mw:
" pro stránky z mediawiki.org nebo "w:
" pro články Wikipedie), za kterou následuje volitelný jmenný prostor (například "Manual:
"), za kterým následuje název stránky.
předpona: | jmenný_prostor: | název_stránky |
volitelné | volitelné | povinné |
Předpony a jmenné prostory Interwiki
Předpony a jmenné prostory Interwiki se řídí stejnými pravidly obsahu:
- musí začínat písmenem
- musí končit dvojtečkou
- mohou obsahovat pouze číslice, písmena, mezeru a podtržítko
- mezery a podtržítka lze používat zaměnitelně
- nerozlišují malá a velká písmena
Předpony a jmenné prostory Interwiki jsou rozpoznány pouze v případě, že je zná daná instalace MediaWiki, buď ve výchozím nastavení nebo prostřednictvím konfigurace.
Například: Na této wiki je "w:Name
" odkazem na článek "Name
" na Wikipedii, protože "w
" je rozpoznána jako jedna z povolených interwiki předpon.
Název "talk:Name
" je odkaz na článek "name" ve jmenném prostoru "talk
" aktuální wiki, protože "talk
" je uznávaný jmenný prostor.
Mohou být přítomny oba a pokud ano, interwiki musí být na prvním místě, například "w:talk:name
".
Pokud název začíná dvojtečkou jako prvním znakem, nehledají se žádné předpony a dvojtečka se před zpracováním názvu odstraní.
Díky tomuto pravidlu je možné mít články s dvojtečkami v názvu.
"E. Coli 0157:H7
" je platný název, stejně jako "Commandos: Behind Enemy Lines", protože "E. Coli 0157
" a "Commandos
" nejsou platné interwiki nebo jmenné prostory.
Název článku
V názvu článku jsou mezery a podtržítka považovány za ekvivalentní a každá je převedena na druhou v příslušném kontextu (podtržítko v URL a klíčích databáze, mezery v prostém textu). "Rozšířené" znaky v rozsahu 0x80..0xFF jsou povoleny na všech místech a jsou platnými znaky. Jsou zakódovány v URL. Rozšířené znaky jsou not urlencoded při použití jako text nebo databázové klíče. Dalšími znaky mohou být písmena ASCII, číslice, pomlčka, čárka, tečka, apostrof, závorky a dvojtečka. Žádné další znaky ASCII nejsou povoleny a budou smazány, pokud budou nalezeny (pravděpodobně způsobí, že prohlížeč nesprávně interpretuje adresu URL).
Kanonické formy
Kánonická forma názvu bude vždy vrácena objektem. Kanonizace zahrnuje následující:
- Některé směrové znaky Unicode (značka zleva doprava atd.) jsou odstraněny, protože to obvykle vyplývá z chybného kopírování a vkládání.
- Vše od
#
dále je odstraněno, protože se to používá pro odkazy na sekce. - Sekvence podtržítek a/nebo určitých bílých znaků jsou sbaleny do jediného podtržítka (pro formuláře URL a DBkey) nebo do jediné mezery (pro textový formulář). Na začátku nebo na konci názvu (nebo jmenného prostoru nebo předpony interwiki) jsou tyto odstraněny.
- Rozpoznané předpony interwiki jsou kanonizovány, což znamená, že jsou vkládány výhradně malými písmeny.
- Rozpoznané názvy jmenných prostorů jsou kanonizovány, což znamená, že první znak je velký a další znaky jsou malé. (To se však nedělá u interwiki-odkazů.)
- V závislosti na wiki a jmenném prostoru může být první znak názvu velký. (To se však nedělá u interwiki-odkazů.)
- U odkazů na uživatelské stránky anonymních uživatelů je IP adresa kanonizována.
- Proces kanonizace také zahrnuje určitou logiku ověření k odmítnutí různých druhů neplatných názvů (jako jsou ty, které jsou příliš dlouhé nebo které obsahují nepovolené znaky).
Diagramy pro třídu MediaWikiTitleCodec
Kodek pro názvy stránek MediaWiki: [code link]
Příklad
Chcete-li zkontrolovat a zjistit, zda daná stránka již existuje:
$titleObject = Title::newFromText( 'Talk:Your desired title here' );
if ( !$titleObject->exists() ) echo "There is no page with that name.";
Vytvořte nový nadpis z textu, například z toho, co byste našli v odkazu. Dekóduje jakékoli HTML entity v textu. Mezery, předpony a počáteční ':' označující hlavní jmenný prostor jsou přijímány. Všimněte si, že pokud stránka neexistuje, nebude vytvořena. K tomu se podívejte na stránku Manual:Article.php.
Funkce
Mnoho z těchto funkcí používá Manual:CoreParserFunctions.php ke generování kouzelných slov.
getArticleID()
Získá ID článku pro tento titul z mezipaměti odkazů a v případě potřeby jej přidejte.
U "interních" článků by měl vrátit pole "id_stránky", pokud článek existuje, jinak vrátí 0.
Pro všechny externí články vrací 0. Všechna ID pro všechny instance titulu vytvořené během požadavku jsou uložena v mezipaměti, takže je lze rychle vyhledat při vykreslování wikitextu se spoustou interních odkazů.
getBaseText()
Získá základní název stránky, tj. část zcela vlevo bez jmenného prostoru a před lomítky, bez převodu mezer na podtržítka. Viz kouzelná slova {{BASEPAGENAME }} a {{BASEPAGENAMEE }}.
getText()
Získá textovou formu (mezery, nikoli podtržítka) hlavní části, tj. název bez jmenného prostoru, ale včetně lomítek a všeho po něm. Viz kouzelné slovo {{PAGENAME }}.
getDBKey()
Získá hlavní část (tj. název bez jmenného prostoru) s podtržítky.
getPrefixedDBKey()
Získá formulář s předponou databázového klíče s podtržítky.
getFragment()
Získá fragment názvu (tj. bit za #) v textové podobě.
getFullText()
Získá předponu názvu s mezerami a libovolný fragment (část začínající znakem '#').
getPartialURL()
Získá URL zakódovanou formu hlavní části. Viz kouzelné slovo {{PAGENAMEE }}.
getFullURL()
Získá skutečnou adresu URL odkazující na tento titul s odkazem na interwiki a fragmentem.
getLocalURL()
Získá adresu URL bez názvu fragmentu nebo serveru.
getPrefixedText()
Získá předponu názvu s mezerami. Toto je forma obvykle používaná pro zobrazení. Viz kouzelné slovo {{FULLPAGENAME }}.
getPrefixedUrl()
Získá název zakódovaný v URL (nikoli skutečnou adresu URL) včetně interwiki. Viz kouzelné slovo {{FULLPAGENAMEE }}.
getSubjectNsText()
Získá text jmenného prostoru stránky předmětu (spíše než hovoru). Viz kouzelná slova {{SUBJECTSPACE }} a {{SUBJECTSPACEE }}.
getSubjectPage()
Získá objekt title spojený s předmětovou stránkou této diskusní stránky. Viz kouzelné slovo {{SUBJECTPAGENAME }}.
getSubpageText()
Získá název podstránky nejnižší úrovně, tj. část úplně vpravo za lomítky. Viz kouzelné slovo {{SUBPAGENAME }}.
getSubpageUrlForm()
Získá formu textu podstránky zakódovanou v URL. Viz kouzelné slovo {{SUBPAGENAMEE }}.
getTalkNsText()
Získá text jmenného prostoru diskusní stránky. Viz magické slovo {{TALKSPACE }} a {{TALKSPACEE }}.
getTalkPage()
Získá objekt Title spojený s diskusní stránkou tohoto článku. Viz {{TALKPAGENAME }} a {{TALKPAGENAMEE }}.
getNamespace()
Získá index jmenného prostoru. Viz {{NAMESPACENUMBER }}.
Související odkazy
- Příručka:$wgLegalTitleChars
- Manual:TitleValue.php
- Manual:Modeling pages
- Help:Bad title
- Category:MediaWiki hooks included in Title.php
Poznámky pod čarou
- ↑ Mutable je klíčové slovo normy, které říká, že i objekt const může tuto proměnnou modifikovat. Proměnlivý atribut může být soukromý nebo veřejný. Může být vždy upraven, i když je objekt v konstantním kontextu.
- ↑ Mutator je obecný název členské funkce, která může zvenčí upravovat jednu nebo více soukromých proměnných objektu. Je zbytečné to nastavovat jako soukromé.