日期:2014-05-17 浏览次数:20654 次
#! /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 重新引入了命名空间的概念,那些“静态”的玩意就都将归位了
学习面向对象的编程,就要用面向对象的方法看问题
不要被那些翻译的极其糟糕的名词所迷惑