Does extending a class include the namespace of the extended class? For the following example, does ColourSprayTrap:timer() collide with the timer() function that exists in the weapons module?
More generally, does a namespace need to be re-declared for a class that extends a class with a namespace?  

If I have a function declared somewhere in the code.

/* In weapons module. */
function timer() { /* Function definition. */ }


I have a class with a namespace.

/* In traps module */
namespace Traps;

class Trap { /* Some class definition. */ }


I extend that class.

class ColourSprayTrap extends Trap { 
/* Start of class defnition. */
  public function timer($time) {
    /* Function defnition. */
  }
/* Rest of class defnition. */
To answer the question in the title: no, extending a class does not inherit the namespace of the extended class. 

Your class namespace must be declared for each class or your class will be placed in the global namespace. 

A little bit more on namespaces since if you don't declare one your code will be placed in the global namespace. Since PHP 5.3 if you don't declare a namespace then the class will belong to the global namespace. From the manual here:


  Without any namespace definition, all class and function definitions are placed into the global space - as it was in PHP before namespaces were supported. Prefixing a name with \ will specify that the name is required from the global space even in the context of the namespace.


As this applies to you, if you don't put a class in a namespace it will simply belong to the global namespace thus it wouldn't clash with a class with the same name in another namespace. 

In general, functions without a class won't interfere with functions with the same name in a class. The reason being is that you need a class object to call a function declared inside a class.