| 1: | 
 What keyword would you use to define a class constant? 
 | 
| 2: | 
 A static property cannot be changed at runtime. True or false? 
 | 
| 3: | 
 Can a static method access normal object properties using the $this pseudo variable? 
 | 
| 4: | 
 What built-in method could you implement to catch an attempt to access a nonexistent property? 
 | 
| 5: | 
 How would you prevent a method being overridden? 
 | 
| 6: | 
 What built-in method will be called when an object is about to be destroyed? 
 | 
| 7: | 
 What keyword would you use to send an exception to client code? 
 | 
| 8: | 
 What clause would you define to handle a specific exception in client code? 
 | 
| 9: | 
 How would you instantiate an abstract class? 
 | 
 |  | 
| A1:
                         | You would define a class constant with the const keyword: 
 
const DJ="John Peel"
 
  | 
 |  | 
| A2:
                         | False. A static property can be changed throughout script operation. Statics are properties that are set at class rather than object level.  | 
 |  | 
| A3:
                         | No. Static methods have no direct access to object properties because they do not exist in object context.  | 
 |  | 
| A4:
                         | You can implement the __get() method to catch attempts to read nonexistent properties.  | 
 |  | 
| A5:
                         | You can prevent a method from being overridden by declaring it final: 
 
final function getDJ() {
  return "john peel";
}
  | 
 |  | 
| A6:
                         | The __destruct() method is called when an object is about to be destroyed.  | 
 |  | 
| A7:
                         | You can send an exception to calling code with the throw keyword: 
 
throw new WrongDjException("not John Peel");
  | 
 |  | 
| A8:
                         | You can handle a specific exception using a catch clause: 
 
try {
  getRightDJ();
} catch ( WrongDjException $e ) {
  print "Sorry an error occurred";
}
  | 
 |  | 
| A9:
                         | This is a trick question. You cannot instantiate an abstract class; you must subclass it and instantiate a concrete child class.  |