On Sun, May 29, 2016 at 2:20 AM, Stas Malyshev smalyshev@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;