PHP面向对象,1
构造和析构
构造方法在创建对象时被调用
析构方法是在对象使用完毕之后再执行。一般可以可用于清理内存中的对象(脚本执行完毕的时候系统会自动清理),而有时脚本执行完毕后并没有清楚,比如数据库链接等,就有必要使用析构方法。
<?php /** * 测试 */ class Computer{ public function __construct(){ echo "这是构造方法<br>"; } public function __destruct(){ echo "这是析构方法"; } } new Computer();
权限问题
php没有包的概念,所以对于类没有修饰词
对于属性有三个权限public protected private这三个和java中一样。
拦截器
一个类中如果有大量的私有属性,而且对私有属性必须提供get和set方法,这样的话会导致程序非常臃肿,PHP中提供了__set(),__get()拦截器方法可以对私有属性进行操作,这两个方法是PHP自己调用的,为了放在被外部访问,应将其改为私有属性。
<?php /** * 测试 */ class Computer{ private $keyBorder; private function __set($key, $value){ $this->$key = $value; } private function getName(){ return $this->keyBorder; } } $computer = new Computer(); $computer->keyBorder = 'test'; echo $computer->getName();
<?php /** * 测试 */ class Computer{ private $keyBorder; private function __set($key, $value){ $this->$key = $value; } private function __get($key){ return $this->$key; } } $computer = new Computer(); $computer->keyBorder = 'test'; echo $computer->keyBorder;
常量
常量在数据区
<?php class Computer{ const NAME='DELL'; } echo Computer::NAME;
静态属性
静态属性和JAVA一样,这里就不啰嗦了 ,访问方式如下:
<?php class Computer{ public static $A=1; public function add(){ self::$A++; } } $computer = new Computer(); $computer->add(); echo Computer::$A;
instanceof
判断某个对象是不是某个类的实现,是则返回1,否返回空
<?php class Computer{ } $computer = new Computer(); echo ($computer instanceof Computer);