<?php namespace BarNS\Things; class Thing { public $publicThing; protected $protectedThing; private $privateThing; function getActualThing(){ } } namespace FooNS\SomethingNS; use BarNS\Things\Thing; class Something { public $publicSomeThing; protected $protectedSomeThing; private $privateSomeThing; /** * The current thing in something. * * @var BarNS\Things\Thing */ public $currentThing; /** * Return a thing. * * @return Thing */ function getThing() { } } namespace FooNS\SubNameSpace; use FooNS\Foo; class FooExtension extends Foo { function bar() { $this->getSomething()-> } } namespace FooNS; use FooNS\SomethingNS\Something; use BarNS\Things\Thing; class Foo { /** * Get something. * * @return Something */ function getSomething() { } /** * Get thing. * * @return Thing */ function getThing() { } function barThis() { } function completeThisGetSomething() { $this->getSomething()-> } function completeThis() { $this-> } }