On Sun, May 29, 2016 at 2:20 AM, Stas Malyshev <smalyshev(a)wikimedia.org>
wrote:
According to
PSR-4 <http://www.php-fig.org/psr/psr-4/>
The fully qualified class name MUST have a top-level namespace name,
also known as a "vendor namespace".
Does this imply all classes in our code base must start with \Mediawiki?
If so, I don't think this is a very good idea.
It looks like current usage of namespaces in core disagrees with you.
/usr/local/src/MediaWiki/core$ grep '^namespace ' -hr includes/ languages/
resources/ maintenance/ mw-config/ | sort -u
namespace MediaWiki;
namespace MediaWiki\Auth;
namespace MediaWiki\Diff;
namespace MediaWiki\Interwiki;
namespace MediaWiki\Languages\Data;
namespace MediaWiki\Linker;
namespace MediaWiki\Logger;
namespace MediaWiki\Logger\Monolog;
namespace MediaWiki\Services;
namespace MediaWiki\Session;
namespace MediaWiki\Site;
namespace MediaWiki\Tidy;
namespace MediaWiki\Widget;
Deployed extensions seem to generally use the extension's name as the root
of the namespace, though. The exceptions are OAuth and Babel.
/usr/local/src/MediaWiki/wmf$ grep '^namespace .*;$' -hr extensions/ skins/
--exclude-dir=vendor --exclude-dir=tests | sed 's/\\.*;$/\\*;/' | sort -u
namespace ArticlePlaceholder;
namespace ArticlePlaceholder\*;
namespace Capiunto;
namespace Cards;
namespace CirrusSearch;
namespace CirrusSearch\*;
namespace CommonsMetadata;
namespace ContentTranslation;
namespace DataValues;
namespace EducationProgram;
namespace EducationProgram\*;
namespace Flow;
namespace Flow\*;
namespace FundraisingTranslateWorkflow;
namespace GeoData;
namespace GettingStarted;
namespace Graph;
namespace GWToolset;
namespace GWToolset\*;
namespace JsonConfig;
namespace Kartographer;
namespace Kartographer\*;
namespace LocalisationUpdate;
namespace MediaWiki\*;
namespace MobileFrontend;
namespace ORES;
namespace PageImages\*;
namespace Php;
namespace ProofreadPage;
namespace ProofreadPage\*;
namespace PropertySuggester;
namespace PropertySuggester\*;
namespace QuickSurveys;
namespace RelatedArticles;
namespace TextExtracts;
namespace Wikibase;
namespace Wikibase\*;
namespace WikibaseQuality\*;
namespace Wikidata;
namespace WikidataOrg;
namespace WikimediaBadges;
namespace ZeroBanner;
namespace ZeroPortal;
/usr/local/src/MediaWiki/wmf$ grep '^namespace MediaWiki\\.*;$' -hr
extensions/ skins/ --exclude-dir=vendor --exclude-dir=tests | sort -u
namespace MediaWiki\Babel\BabelBox;
namespace MediaWiki\Extensions\OAuth;
--
Brad Jorsch (Anomie)
Senior Software Engineer
Wikimedia Foundation