Příručka:Title.php

This page is a translated version of the page Manual:Title.php and the translation is 100% complete.

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

Poznámky pod čarou

  1. 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.
  2. 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é.