Manual:Title.php/zh

The MediaWiki software's  class implements the  and IDBAccessObject interfaces. It represents article titles, which are used for many purposes, including:


 * as the human-readable text title of the article
 * in the URL used to access the article
 * 条目的维基文本链接
 * the key into the article database

The class is instantiated with one of these formats. 实例化后，可以以其他格式检索标题或查询其属性. is intended to be an immutable "value" class, so there are no mutator functions.

To instantiate, call one of the static factory methods:


 * -  This is not the function you want.  使用Title::newFromText.
 * - 返回标题数组
 * - Create a new Title from a namespace index and a DB key. 错误时返回null.
 * -  This is not the function you want.  使用Title::newFromText.
 * - 返回标题数组
 * - Create a new Title from a namespace index and a DB key. 错误时返回null.
 * - Create a new Title from a namespace index and a DB key. 错误时返回null.

Once instantiated, the other non-static accessor methods can be used, such as,  ,  , etc.

If you have a Title object, you can get a:


 * object, using
 * object, using

This class can fetch various kinds of data from the database; however, it does so inefficiently. Consider using a object instead. TitleValue is more lightweight and does not rely on global state or the database.



标题结构
A title consists of an optional Interwiki prefix (such as " " for pages from mediawiki.org or " " for Wikipedia articles), followed by an optional namespace (such as " "), followed by the page name.



跨维基前缀和名字空间
Interwiki prefixes and namespaces follow the same content rules:


 * 它们必须以字母开头
 * 它们必须以冒号结束
 * 它们只能包含数字，字母，空格字符和下划线字符
 * 空格和下划线可互换使用
 * 它们不区分大小写

Interwiki prefixes and namespaces are only recognized if they are known to a given installation of MediaWiki, either by default or through configuration.

For example: On this wiki, " " is a link to the article " " on Wikipedia, because " " is recognized as one of the allowable interwiki prefixes. The title " " is a link to the article "name" in the " " namespace of the current wiki, because " " is a recognized namespace. Both may be present, and if so, the interwiki must come first, for example, " ".

If a title begins with a colon as its first character, no prefixes are scanned for, and the colon is removed before the title is processed. Because of this rule, it is possible to have articles with colons in their names. " " is a valid title, as is "Commandos: Behind Enemy Lines", because " " and " " are not valid interwikis or namespaces.



条目名称
In the article name, spaces and underscores are treated as equivalent and each is converted to the other in the appropriate context (underscore in URL and database keys, spaces in plain text). "Extended" characters in the 0x80..0xFF range are allowed in all places, and are valid characters. They are encoded in URLs. Extended characters are not urlencoded when used as text or database keys. Other characters may be ASCII letters, digits, hyphen, comma, period, apostrophe, parentheses and colon. No other ASCII characters are allowed, and will be deleted if found (they will probably cause a browser to misinterpret the URL).

Canonical forms
The canonical form of a title will always be returned by the object. Canonicalization involves the following:


 * Certain Unicode directional characters (left-to-right mark, etc.) are stripped, since that usually results from errant copy-and-paste.
 * Everything from  onward is stripped, since that's used for section links.
 * Sequences of underscores and/or certain whitespace characters are collapsed into a single underscore (for the URL and DBkey forms) or a single space (for the text form). At the beginning or end of the title (or namespace or interwiki prefix), these are stripped.
 * Recognized interwiki prefixes are canonicalized, meaning that they're put entirely in lowercase.
 * Recognized namespace-names are canonicalized, meaning that the first character is capitalized and subsequent characters are put in lowercase. (This is not done for interwiki-links, however.)
 * Depending on the wiki and the namespace, the first character of a title may be capitalized. (This is not done for interwiki-links, however.)
 * For links to user-pages of anonymous users, the IP address is canonicalized.
 * The canonicalization process also includes some validation logic to reject various kinds of invalid titles (such as ones that are too long, or that contain illegal characters).

Diagrams for MediaWikiTitleCodec Class
A codec for MediaWiki page titles: &#x5B;code link&#x5D;

示例
To check and see if a given page already exists:

Create a new Title from text, such as what one would find in a link. Decodes any HTML entities in the text. Spaces, prefixes, and an initial ':' indicating the main namespace are accepted. Note that if the page does not exist, this will not create it. For that, see Manual:Article.php.

Functions
Many of these functions are used by to generate magic words.

getArticleID
Get the article ID for this Title from the link cache, adding it if necessary.

For "internal" articles, it should return the "page_id" field if the article exists, else it returns 0.

For all external articles it returns 0. All of the IDs for all instances of Title created during a request are cached, so they can be looked up quickly while rendering wikitext with lots of internal links.

getBaseText
Get the base page name, i.e. the leftmost part excluding namespace and before any slashes, without converting spaces to underscores. See magic words and.

getText
Gets the text form (spaces not underscores) of the main part, i.e. the title excluding namespace, but including slashes and everything after. See magic word.

getDBKey
Get the main part (i.e. the title excluding namespace) with underscores.

getPrefixedDBKey
Get the prefixed database key form with underscores.

getFragment
Get the Title fragment (i.e. the bit after the #) in text form.

getFullText
Get the prefixed title with spaces, plus any fragment (part beginning with '#').

getPartialURL
Get the URL-encoded form of the main part. See magic word.

getFullURL
Get a real URL referring to this title, with interwiki link and fragment.

getLocalURL
Get a URL with no fragment or server name.

getPrefixedText
Get the prefixed title with spaces. This is the form usually used for display. See magic word.

getPrefixedUrl
Get a URL-encoded title (not an actual URL) including interwiki. See magic word.

getSubjectNsText
Get the namespace text of the subject (rather than talk) page. See magic words and.

getSubjectPage
Get a title object associated with the subject page of this talk page. See magic word.

getSubpageText
Get the lowest-level subpage name, i.e. the rightmost part after any slashes. See magic word.

getSubpageUrlForm
Get a URL-encoded form of the subpage text. See magic word.

getTalkNsText
Get the namespace text of the talk page. See magic word and.

getTalkPage
Get a Title object associated with the talk page of this article. See and.

getNamespace
Get the namespace index. See.

