日期:2014-05-17 浏览次数:20599 次
#! /usr/bin/php <?php class Person{ public static $count = 0; ### 记录类的实例数量 const GENDER_MALE = 'male'; const GENDER_FEMALE = 'female'; private $_gender = self::GENDER_MALE; private $_name = 'noname'; public function setName($name){ $this->_name = $name; return $this; } public function __construct($name='' , $gender=self::GENDER_MALE){ self::$count++; $this->_name = $name; $this->_genger = $gender; } public function __destruct(){ self::$count--; } public function calc($action='add' , $num=1){ static $sum = 0; if($action == 'add'){ $sum += $num; }else if($action == 'sub'){ $sum -= $num; } echo 'now $sum = ' , $sum , "\n"; return $this; } public function getGender(){ return $this->_gender; } public function setGender($gender=self::GENDER_MALE){ $this->_gender = $gender; } } $ary = array(); foreach(range(1 , 100) as $_){ $ary[] = new Person("Person$_"); } echo Person::$count , "\n"; ### 100个人 unset($ary[15]); ### 销毁一个 echo Person::$count , "\n"; ### 99个人 $me = $ary[0]->setName("me"); $you = $ary[1]->setName("you"); foreach(range(1 , 3) as $_){ ### $me->calc("add" , $_*2); $you->calc("sub" , $_*3); echo "================ \n"; } echo $me->setGender(Person::GENDER_FEMALE); echo $me->getGender();
------解决方案--------------------
使用静态变量可以减少资源的使用???
类的静态属性与全局变量的区别在于作用范围不同
当从一个类实例化很多对象的时候,静态属性是公共数据区,也就是各个对象共享的
这与资源的消耗没什么关系
同样的,类常量与常量也只是作用范围不同
相似的还有,类的静态方法就是一组作用范围受限的函数
由于 php5.3 重新引入了命名空间的概念,那些“静态”的玩意就都将归位了
学习面向对象的编程,就要用面向对象的方法看问题
不要被那些翻译的极其糟糕的名词所迷惑