$clName = "M"; var_dump($clName::MYPI); // okay to use a string containing class name //var_dump("M"::MYPI); // but not the literal form echo "-----------------------------\n"; var_dump(P::psf()); // okay to access static method via class var_dump(P::$psProp); // okay to access static property via class, but leading $ needed!! var_dump(P::MYPI); // okay to access const via class $clName = "P"; var_dump($clName::MYPI); // okay to use a string containing class name echo "-----------------------------\n"; P::f1(); echo "-----------------------------\n"; $m = new M(); $n = new N(); $p = new P(1000); echo "-----------------------------\n"; $m->b1(); echo "-----------------------------\n"; $n->b1(); echo "-----------------------------\n"; $p->b1(); echo "-----------------------------\n"; // simplified version of static class Base { public function b()