Manuel:Title.php
Fichier MediaWiki : Title.php | |
---|---|
Emplacement : | includes/ |
Code source : | master • 1.40.1 • 1.39.5 • 1.35.13 |
Classes : | Title |
La classe Title
du logiciel MediaWiki implemente les interfaces LinkTarget et IDBAccessObject.
Elle représente les titres des articles, utilisés à différentes fins, y compris :
- comme texte du titre de l'article lisible par un humain
- dans l'URL utilisée pour accéder à l'article
- le lien en wikicode vers l'article
- la clé de l'article dans la base de données
La classe est instanciée avec l'un de ces formats.
Une fois instancié, le titre peut être récupéré dans d'autres formats ou interrogé pour avoir ses attributs.
Title
est prévu pour être une classe de valeur non mutable[1][2]
Pour instancier Title
, appelez l'une des méthodes statiques de la fabrique :
Title::newFromDBKey( $key )
Title::newFromID( ($id, $flags=0) )
Title::newFromText( $text, $defaultNamespace=NS_MAIN )
Title::newFromURL( $url )
- Ce n'est pas la fonction que vous désirez. Utilisez Title::newFromText().Title::newFromIDs( $ids )
- retourne un tableau d'objets TitleTitle::newFromRedirect( $text )
Title::makeTitleSafe( $ns, $title, $fragment= '', $interwiki= '')
- Crée un nouvel objet Title à partir d'un index d'espace de noms et d'une clé de base de données. Retourne null en cas d'erreur.Title::newFromRedirectArray( $text )
Title::newFromRedirectRecurse( $text )
Title::newFromRow( $row )
Title::newMainPage()
Une fois instancié, les autres méthodes non statiques des assesseurs peuvent être utilisées telles que getText()
, getDBKey()
, getNamespace()
, etc.
Si vous avez un objet Title, vous pouvez obtenir un :
- objet Article , utilisant
Article::newFromTitle ( $title, IContextSource $context )
- objet WikiPage , utilisant
WikiPage::factory ( Title $title )
Cette classe peut récupérer différents types de données de la base de données; néanmoins, elle le fait de manière pas trop efficace. A la place, prenez plutôt un objet TitleValue . TitleValue est plus léger et ne dépend pas de l'état global de la base de données.
Structure de Title
Un titre est constitué d'un préfixe Interwiki optionnel (tel que « mw:
» pour les pages de mediawiki.org ou « w:
» pour les articles Wikipedia), suivi d'un espace de nom optionnel (tel que « Manual:
»), suivi du nom de la page.
préfixe : | espaces de noms : | nom de page |
optionnel | optionnel | obligatoire |
Prefixes et espaces de noms Interwiki
Les prefixes Interwiki et les espaces de noms suivent les mêmes règles de contenu :
- ils doivent commencer par une lettre
- ils doivent se terminer par un caractère deux points ':'
- ils ne peuvent contenir que des chiffres, des lettres, des caractères espace et des soulignés '_'
- les espaces et les caractères souligné '_' peuvent être utilisés invariablement
- ils ne sont pas sensibles à la casse
Les préfixes et les espaces de noms Interwiki ne sont reconnus que s'ils sont connus d'une installation de MediaWiki, soit par défaut, soit par la configuration.
Par exemple sur ce wiki, « w:Name
» est un lien vers l'article « Name
» de Wikipedia, parce que « w
» est reconnu comme l'un des préfixes interwiki autorisés.
Le titre « talk:Name
» est un lien vers l'article « name » dans l'espace de noms « talk
» du wiki actuel, parce que « talk
» est un espace de noms reconnu.
Les deux peuvent être présents, et si c'est le cas, l'interwiki doit se trouver en premier, par exemple, « w:talk:name
».
Si un titre commence par le caractère deux points ':' , les préfixes ne sont pas scannés, et ce caractère est supprimé avant que le titre ne soit traité.
Grâce à cela, il est possible d'avoir des articles avec le caractère deux points ':' dans le nom.
"E. Coli 0157:H7
" est un titre valide, comme l'est "Commandos: Behind Enemy Lines", parce que "E. Coli 0157
" et "Commandos
" ne sont pas des liens interwikis ni des espaces de noms valides.
Nom d'article
Dans le nom d'article, les espaces et les soulignés '_' sont traités de la même manière et chacun est converti en l'autre en fonction du contexte (le souligné est utilisé dans les URL et les clés de la base de données, les espaces sont utilisés dans le texte brut). Les caractères « étendus » (extended) appartiennent à l'intervalle 0x80..0xFF . Ils sont autorisés partout et sont des caractères valides. Ils sont encodés dans les URLs. Les caractères étendus (encodés URL) ne sont pas encodés lorsqu'ils sont utilisés pour le texte ou pour les clés de la base de données. Les autres caractères peuvent être des lettres ASCII, des chiffres, un trait d'union, une virgule, un point, une apostrophe, des parenthèses et des deux points. Aucun autre caractère ASCII n'est autorisé, et sera supprimé s'il est trouvé (cela entraînera probablement une mauvaise interprétation de l'URL par le navigateur).
Formes canoniques
La forme canonique d'un titre sera toujours rendue par l'objet. La canonisation implique ce qui suit :
- Certains caractères directionnels Unicode (marque de gauche à droite, etc.) sont supprimés, car ils résultent généralement d'un copier-coller erroné.
- À partir de
#
tout est supprimé, car cela est utilisé pour les liens de section. - La répétition du caractère souligné '_' est réduite à un seul '_' (format des URL et des clés de base de données des formulaires).
Les suites consécutives de certains espaces sont réduites à un caractère ' ' unique (formulaires textuels). Ils sont supprimés s'ils se trouvent au début et/ou à la fin du titre, ou le l'espace de noms, ou du préfixe interwiki. - Les préfixes interwiki reconnus sont mis sous forme canonique, ce qui signifie qu'ils sont tous en minuscules.
- Les noms des espaces de noms reconnus sont mis sous forme canonique, ce qui signifie que le premier caractère est en majuscule, les autres étant des minuscules. (néanmoins, ceci n'est pas fait pour les liens interwiki).
- En fonction du wiki et de l'espace de noms, le premier caractère du titre peut être en majuscule. (Néanmoins, ceci n'est pas fait pour les liens interwiki).
- Pour les liens vers les pages utilisateur des utilisateurs anonymes, l'adresse IP est mise sous forme canonique.
- Le processus de mise sous forme canonique inclut aussi une logique de validation afin de rejeter les titres non valides (comme ceux qui sont trop longs, ou qui contiennent des caractères illégaux).
Diagrammes de la classe MediaWikiTitleCodec
Codec pour les titres de page MediaWiki : [code link]
Exemple
Pour vérifier et voir qu'une page donnée existe déjà :
$titleObject = Title::newFromText( 'Talk:Your desired title here' );
if ( !$titleObject->exists() ) echo "There is no page with that name.";
Créez un nouvel objet Title à partir du texte, tel qu'on pourrait le trouver dans un lien. Décodez toutes les entités HTML du texte. Sont acceptés : les espaces, les préfixes et le ':' initial qui identifie l'espace de noms principal. Notez que si la page n'existe pas, ceci ne va pas la créer. Voir pour cela Manual:Article.php.
Fonctions
Beaucoup de ces fonctions sont utilisées par Manuel:CoreParserFunctions.php pour générer les mots magiques.
getArticleID()
Fournit l'ID de l'article pour le titre correspondant à partir du cache lié, en l'ajoutant si nécessaire.
Pour les articles « internes » , revoie le champ page_id
si l'article existe, sinon retourne 0.
Retourne 0 pour tous les articles externes. Les IDs de toutes les instances Title créées durant une requête sont mis en cache, afin d'être recherchés rapidement lors de la génération du wikicode ayant de multiples liens internes.
getBaseText()
Fournit le nom de base de la page, c'est à dire la partie la plus à gauche, hors espace de noms, et jusqu'au premier slash (s'il y en a), sans convertir les espaces en soulignés '_' . Voir les mots magiques {{BASEPAGENAME }} et {{BASEPAGENAMEE }}.
getText()
Fournit la forme textuelle (espaces et pas les soulignés '_') de la partie principale, c'est à dire le titre sans l'espace de noms, mais avec les slashes et ce qu'il y a après. Voir le mot magique {{PAGENAME }}.
getDBKey()
Fournit la partie principale (c'est à dire le titre sans l'espace de noms) avec les caractères souligné '_'.
getPrefixedDBKey()
Fournit la forme préfixée de la clé de la base de données avec les caractères soulignés '_'.
getFragment()
Fournit le fragment du titre Title (c'est à dire le morceau qui suit le '#') sous forme textuelle.
getFullText()
Fournit le titre préfixé avec des espaces, avec tout fragment (partie commençant avec '#').
getPartialURL()
Fournit la forme encodée d'URL pour la partie principale. Voir le mot magique {{PAGENAMEE }}.
getFullURL()
Fournit une URL réelle pointant vers ce titre , sous la forme d'un lien interwiki et d'un fragment.
getLocalURL()
Fournit une URL sans fragment ni nom de serveur.
getPrefixedText()
Fournit le titre préfixé avec les espaces. Ceci est la forme généralement utilisée pour l'affichage. Voir le mot magique {{FULLPAGENAME }}.
getPrefixedUrl()
Fournit une orme encodée d'URL pour le titre (pas l'URL actuelle) incluant le préfixe innterwiki. Voir le mot magique {{FULLPAGENAMEE }}.
getSubjectNsText()
Fournit le texte de l'espace de noms de la page du sujet (plutôt que celui de la page de discussion). Voir les mots magiques {{SUBJECTSPACE }} et {{SUBJECTSPACEE }}.
getSubjectPage()
Fournit un objet Title associé à la page du sujet de cette page de discussion. Voir le mot magique {{SUBJECTPAGENAME }}.
getSubpageText()
Fournit le nom de la sous-page de plus bas niveau, c'est à dire la partie la plus à droite après le dernier slash. Voir le mot magique {{SUBPAGENAME }}.
getSubpageUrlForm()
Fournit une forme encodée d'URL pour le texte de la sous-page. Voir le mot magique {{SUBPAGENAMEE }}.
getTalkNsText()
Fournit le texte de l'espace de noms de la page de discussion. Voir les mots magiques {{TALKSPACE }} et {{TALKSPACEE }}.
getTalkPage()
Fournit un objet Title associé à la page de discussion de cet article. Voir {{TALKPAGENAME }} et {{TALKPAGENAMEE }}.
getNamespace()
Fournit l'index de l'espace de noms. Voir {{NAMESPACENUMBER }}.
Voir aussi
- Manuel:$wgLegalTitleChars
- Manuel:TitleValue.php
- Manual:Modeling pages
- Aide:Titre non valide
- Category:MediaWiki hooks included in Title.php
Références
- ↑ Mutable est un mot clé de la norme permettant de dire que même un objet const peut modifier cette variable. Un attribut mutable peut être private ou public. Il est toujours modifiable même lorsque l'objet est dans un contexte constant.
- ↑ Mutateur est le nom général d'une fonction membre qui permet de modifier une ou des variables privées de l'objet à partir de l'extérieur. Si vous la mettez private, ça ne sert à rien.