php面向对象理论知识,PHP面向对象基础知识整理1

拦截器使用,拦截器检查到私有字段,则不会报错,如果没有拦截器会直接报错。

class Computer{

private $_name;

private $_model;

private $_cpu;

//当类外对象调用私有字段时,会去检查是否有拦截器,如果有不会报错,没则报错,__set和__get是拦截器。

//直接对$_name进行赋值,那么__set方法就会拦截住,就不会报错了。

public function __set($_key, $_value)

{

//那么$key='_name',那么$value='联想'

//$this->_name = '联想'

$this -> $_key = $_value;

}

public function __get($_key)

{

return $this->$_key;

}

}

$computer = new Computer();

$computer->_name='联想';

$computer->_model='i7';

$computer->_cpu='四核';

echo $computer->_name;

echo $computer->_model;

echo $computer->_cpu;

PHP5.3以后不支持方法私有,这点要注意。

class Computer{

const NAME = 'DELL';

}

echo Computer::NAME;

常量使用有个概念需要知道,常量是运行在数据区上的,跟变量和类运行在堆栈内存不一样,数据区运行数据往往是叠加的,而堆栈区运行当有多个对象,数据并不是叠加的。

class Computer{

public $_count = 0;

public function _add(){

$this->_count++;

}

}

$computer1 = new Computer();

$computer1->_add();

$computer1->_add();

$computer1->_add();

echo $computer1->_count;

$computer2 = new Computer();

$computer2->_add();

$computer2->_add();

$computer2->_add();

echo $computer2->_count;//最后输出结果是3 3

class Computer{

public static $_count = 0;

public function _add(){

//如果是静态成员字段,要用self来调用,而不是$this

self::$_count++;

}

}

$computer1 = new Computer();

$computer1->_add();echo Computer::$_count;

$computer1->_add();echo Computer::$_count;

$computer1->_add();

echo Computer::$_count;

$computer2 = new Computer();

$computer2->_add();echo Computer::$_count;

$computer2->_add();echo Computer::$_count;

$computer2->_add();

echo Computer::$_count;

最后输出结果是3,6 我特意每条打印发现是123456,证明是叠加上去的,以下例子除了成员字段静态化,连方法也静态化也是一样的。

class Computer{

public static $_count = 0;

public static function _run(){

self::$_count++;

}

}

//当方法,成员字段都是静态时,不需要实例化就能直接调用

Computer::_run();

Computer::_run();

Computer::_run();

echo Computer::$_count;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值