类与对象-属性
<?php header("Content-type:text/html; charset=utf-8"); //////////////////////////////////////////////////////// //@date: 2013-02-23 //类与对象-属性 //属性的声明是由关键之子public或者protected或者private开头,然后跟一个变量来组成,属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编辑阶段之后在运行阶段运算出来的常数 // abstract class PropertyObject // { // public function __get($name) // { // if(method_exists($this, ($method='get_'.$name))){ // return $this->$method(); // }else // return; // } // public function __isset($name) // { // if(method_exists($this, ($method ='isset_'.$name))) // { // return $this->$method(); // }else // return; // } // public function __set($name, $value) // { // if(method_exists($this, ($method='set_'.$name))) // { // $this->$method($value); // } // } // public function __unset($name) // { // if(method_exists($this, ($method='unset_'.$name))) // { // $this->$method(); // } // } // } // class test // { // public $var1 = 1; // protected $var2 = 2; // private $var3 = 4; // static $var4 = 4; // public function toArray() // { // return (array)$this; // } // } // $t =new test; // print_r($t->toArray()); //类常量 // class MyClass // { // const constant = 'constant value'; // function showConstant() // { // echo self::constant."<BR>"; // } // } // echo Myclass::constant; // $classname = "MyClass"; // echo $classname::constant; //PHP5.3之后 // $class = new MyClass(); //PHP5.3之后 // $class->showConstant(); // echo $class::constant; // class Weather // { // const danger = 'parent'; // static function getDanger($class) // { // } // } // class Rain extends Weather // { // const danger = 'child'; // } // $obj = new Rain(); // $danger = constant($class::danger); // abstract class dbObject // { // const TABLE_NAME = 'undefined'; // public static function GetAll() // { // //Call to undefined function get_called_class() // //提示错误,无语了 // $c = get_called_class(); //get_called_class() 获取静态方法调用的类名 // //return "SELECT * FROM ".$c::TABLE_NAME; // //return "SELECT * FROM `".$c::TABLE_NAME."`"; // return "SELECT * FROM "; // } // } // class dbPerson extends dbObject // { // const TABLE_NAME = 'persons'; // } // class dbAdmin extends dbPerson // { // const TABLE_NAME = 'admins'; // } // echo dbPerson::GetAll()."<BR><BR>"; //手册上这个例子也一样,应该是PHP版本问题 //constant()函数返回常量的值 // function get_class_const($class, $const) // { // return constant(sprintf('%s::%s', $class, $const)); // } // class Foo // { // const BAR = 'foobar'; // } // $class = "Foo"; // echo get_class_const($class, 'BAR'); // abstract class a // { // private function readConst() // { // return $this->getConst('CONST'); // } // //两个抽象类 // abstract public static function getConstFromOutside($const); // abstract protected function getConst($const); // } // class b extends a // { // private static $CONST = 'any value'; // public static function getConstFromOutside($const) // { // return self::$$const; // } // protected function getConst($const) // { // self::$$const; // } // } // echo b::getConstFromOutside('CONST'); //eval()函数把字符串按照PHP代码来计算 //该字符串必须是合法的PHP代码,且必须以分号结尾 //如果没有在代码字符串中调用return语句,则返回NULL,如果代码中存在解析错误,则eval()函数返回false // class Test // { // public static $open=2; // protected static $var = 1; // private static $secret = 3; // } // $classname = "Test"; // //什么是php反射类,顾名思义,可以理解为一个类的映射。 // $x = new ReflectionClass($classname); // $y = array(); // //GetStaticProperties()取得所有静态的方法 // foreach($x->GetStaticProperties() as $k=>$v) // { // //echo str_replace(chr(0), "@", $k); // //echo $k; // $y[str_replace(chr(0), "@", $k)] = $v; // //$y[$k] = $v; // } // var_dump($y); // $a = array("open", "var", "secret", "nothing"); // foreach($a as $b) // { // if(isset($y["$b"])) // echo "\$b is public: {$y[$b]}<BR><BR>"; // elseif(isset($y["@*@$b"])) // echo "\"$b\" is protected: {$y["@*@$b"]}<br/>"; // else // echo "\$b:{$b} is not a static member of $classname<BR>"; // } // class A // { // const X = 1; // const Y = self::X; // } // class B extends A // { // const X = 1.0; // } // var_dump(B::Y); // echo A::Y; //final用于一个类不能被继承,或者一个方法不能被覆盖 // abstract class aClassConstant // { // final function __set($member, $value){ // throw new Exception("你不能设置一个常数!"); // } // final function __get($member) // { // return $this->$member; // } // } // class DbConstant extends aClassConstant // { // protected $host = 'localhost'; // protected $user = 'user'; // protected $password = 'pass'; // protected $database = 'db'; // protected $time; // function __construct() // { // $this->time = time() +1; // } // } // $dbConstant = new DbConstant(); // echo $dbConstant->host; // $dbConstant->host = '127.0.0.1'; //const FOO = 'bar'; //这句有错 //var_dump(FOO); // class Foo // { // const a=7; // const x = 99; // } // class Bar extends Foo // { // const a = 42; // } // $b = new Bar(); // $r = new ReflectionClass($b); // // echo $r->getConstant('a');//42 // echo "<BR>".$r->getConstant('x'); //99 // class Foo // { // const foo = 'bar'; // public $foo = 'foobar'; // const bar = 'foo'; // static $bar = 'foobar'; // } // var_dump(foo::$bar); //foobar // echo "<BR>"; // var_dump(foo::bar); //foo // echo "<BR>"; // $bar = new Foo(); // var_dump($bar->foo); //foobar // echo "<BR>"; // var_dump(bar::foo); //foo(现在的版本不支持) // interface AppConstants // { // const FOOBAR = 'Hello, World'; // } // class Example implements AppConstants // { // public function test() // { // echo self::FOOBAR; // } // } // $obj = new Example(); // $obj->test(); // class Dimension // { // const MIN = 0, MAX=800; // public $width, $height; // public function __construct($w=0, $h=0) // { // $this->width = self::clamp($w); // $this->height = self::clamp($h); // } // public function __toString() // { // return "数据为: [width={$this->width}, height={$this->height}]"; // } // protected static function clamp($value) // { // if($value < self::MIN) $value = self::MIN; // if($value > self::MAX) $value = self::MAX; // return $value; // } // } // echo (new Dimension())."<BR>"; // echo (new Dimension(1500,97))."<BR>"; // echo (new Dimension(14, -20))."<BR>"; // echo (new Dimension(240, 80))."<BR>"; // class abc // { // const avar = "abc's"; // function show() // { // echo self::avar."<BR><BR>"; // } // } // class def extends abc // { // const avar = "def's"; // function showmore() // { // echo self::avar."<BR><BR>"; // $this->show(); // } // } // $bob = new def(); // $bob->showmore(); //def's //abc's // class abc // { // protected $avar = "abc's"; // function show() // { // echo $this->avar."<BR><BR>"; // } // } // class def extends abc // { // protected $avar = "def's"; // function showmore() // { // echo $this->avar."<BR><BR>"; // $this->show(); // } // } // $bob = new def(); // $bob->showmore(); ?>