CS174
Chris Pollett
Mar 9, 2016
$my_copy = clone $my_obj;
class A{} class B extends A {}
interface MyInterface { function method1($a, $b); }
class C implements MyInterfaceA, MyInterfaceB {}
class A {function foo(){} } class B extends A {function foo(){} }
class A {final function foo() {} /* can't override*/ }
namespace TheNameOfMyNamespace; // code for namespace class A { //code for class A } function foo() { }This declaration with the same name can be at the top of multiple files if you would like to group the contents of these files into the same namespace.
namespace TheNameOfMyNamespace\MySubNameSpace; //code
namespace D { // code for D } namespace E { // code for E }
namespace N; function foo() { //some code } foo(); //assume N namespace.
M\foo(); /*in context of above we are in N namespace already, so M\foo() means the foo() in N\M namespace. */ \N\M\foo(); \time(); //time function in the global (default) namespace.
use A\B\C; //rather that type $a= new A\B\C(); you can type $a= new C(); use D\E\F as G; //rather than typing D\E\F\goo(); could type G\goo();
trait MyMethods { function getFoo() { /* code for getFoo */ } function getGoo() { /* code for getFoo */ } } class SomeClassA extends NeedsMethods { use MyMethods; //as if I had written the code in MyMethods here /* rest of SomeClassA code */ } class SomeClassB extends NeedsMethods { use MyMethods; /* rest of SomeClassB code */ } $a = new SomeClassA(); $a->getFoo();
class A { use MyMethodsA, MyMethodsB; // ... }
use MyMethodsA, MyMethodsB { MyMethodsA::foo insteadof MyMethodsB; MyMethodsB::goo insteadof MyMethodsA; MyMethodsA::goo as gooey; MyMethodsB::foo as protected fooey; //notice can change visibility if want }
try {} catch(MyException $e){} catch(Exception $ee){}
if($denom == 0){ throw new Exception("divide by zero"); }