Curiously, I couldn't find a task for this. The Title class declares several public properties, e.g.
```lang=php
/** @var string Text form (spaces not underscores) of the main part */
public $mTextform = '';
/** @var string URL-encoded form of the main part */
public $mUrlform = '';
/** @var string Main part with underscores */
public $mDbkeyform = '';
/** @var int Namespace index, i.e. one of the NS_xxxx constants */
public $mNamespace = NS_MAIN;
/** @var string Interwiki prefix */
public $mInterwiki = '';
/** @var bool Was this Title created from a string with a local interwiki prefix? */
private $mLocalInterwiki = false;
/** @var string Title fragment (i.e. the bit after the #) */
public $mFragment = '';
```
These are documented as private/internal:
```lang=php
/** @name Private member variables
* Please use the accessor functions instead.
* @internal
* @{
*/
```
but this is not enforced by the interpreter. In fact, usages of these properties exist in the wild, according to codesearch. Also, IDEs (PHPStorm at least) are not correctly parsing the group annotation, and do not highlight these properties as internal.
Although the Title class is eventually going to be replaced by narrow interfaces like PageIdentity and LinkTarget, it should be possible to complete this deprecation at a relatively low cost, since I think it would fall under the Stable Interface Policy.
Having these properties private would likely ease the transition to the new interfaces, and could also help with keeping the Title class backwards-compatible and performant (for instance, it's not possible to cache the result of prefix() because there's no guarantee of immutability).