PHP类

1.PHP自定义类  类中的成员属性如果没有特殊关键字修饰  就必须加上var关键字,而在其他地方不需要这样做

2.PHP类中的构造方法无法进行重载

构造方法不要设置成私有的权限

 

也就是说在php类中只能声明一个构造方法,不过可以通过默认参数,使php类中的构造方法实现与其他面向对象语言的构造方法重载功能

3.php类中的析构方法不能有任何参数,通常在对象的引用被赋予其他值或者页面运行结束后,对象会失去引用,在php 中有一个垃圾回收机制,当对象不能访问时就会自动启动垃圾回收的程序,收回对象在堆内存中占用的内存空间,析构方法正是在此之前自动调用的。

4.php类封装的含义

一是把类中的所有属性和方法结合在一起,形成一个不可分割的独立的单位

二是信息隐蔽,即尽可能隐蔽类中的内部细节,对外界形成一道屏障,只保留有限的对外接口使之与外部发生联系

5.PHP中的魔术函数

__construct (), __destruct,__set,__get,__isset,__unset

其中__construct ()不要设置成私有的权限,以至于在创建对象时,无法进行对成员属性的初始化工作

其他的几个如__set,__get,__isset,__unset等为了防止用户直接调用,可以将此函数设置为私有权限

6.PHP类的继承性

PHP与java只能类的单继承模式

作用:加强代码的可重用性与应用程序的可扩展性与维护性

7.PHP的访问修饰符

 privateprotectedpublic(默认)
同一个类中111
类的子类中 11
所有的外部成员  1

 

8.PHP 子类重载父类的方法

在php中不能定义重名的函数,也不能在同一个类中定义重名的方法,所以也就没有方法重载

但在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法重写。

php语言 在子类重载的方法中调用父类被覆盖方法的功能,使用关键字parent::父类方法名(),然后添加自己的一些代码

9.PHP中常见的关键字

php5提供了一些常见关键字,用来修饰类,成员属性,或成员方法,他们具有特定的功能,例如final,static,const等

9.1 final它可以加在类或类中方法前,但不能使用final标识成员属性,即使final有常量的意思,但在php中定义常量是使用define()函数来完成,在类中将成员属性声明为常量也有专门的方式。

那么他的作用如下

1)使用final标识的类,不能被继承。

2) 在类中使用final标识的成员方法,在子类中不能被覆盖

9.2 static关键字

static可以标识成员属性和成员方法,利用static标识的成员是属于类的,即在多个对象之间是共享的

在类成员方法中可以用self::XX或者self::XX()访问

在类体外可以使用 类名::XX或者类名::XX()访问,但是也可以通过对象名访问静态方法,但是不能通过对象名访问静态属性

注意 :静态方法只能访问静态属性,但是非静态方法可以通过self::XX或者类名::XX访问静态属性或者静态方法

<?php
class A{
	static $count;
	function __construct(){
		self::$count++;
	}
	static function __getC(){
		return self::$count;
	}
}
A::$count=0;
$a=new A();
$b=new A();
$c=new A();
echo A::$count;
echo "<br>";
echo $c->__getC();
?>

 

9.3 const

const在类中声明常量,其访问方式和静态成员差不多,但是在类外部不能通过对象名访问类常量

10.php类中常用的魔术方法

10.1 __toString

__toString 方法在直接输出对象引用时自动调用

<?php
class TestClass{
	private $a;
	function __construct($str){
		$this->a=$str;
	}
	function __toString(){
		return "xuehao ";
	}
}
$o=new TestClass("hello");
echo $o;
?>

10.2 __call()

在调用对象中不存在的方法时,就会出现系统报错,然后程序退出不能继续执行,在类中添加一个魔术方法"__call",则调用对象中不存在的方法时就会自动调用该方法。

<?php
class A{
	function hello(){
		echo "hello";
	}
	function __call($functionName,$args){
		echo "你所调用的函数".$functionName."不存在";
		echo "参数:";
		print_r($args);
		echo "不存在";
	}
}
$a=new A();
$a->my('world','hello');//调用对象中不存在的方法
echo "<br>"."ok";//因为_call函数的存在,这语句句会正常执行,若不存在_call,则会报错,退出程序
?>

__call函数的有两个参数,第一个是不存在方法的方法名,第二个是这个不存在方法调用时参数列表所形成的数组

10.3 __autoload()

当创建一个类的实例化对象时,却在本页面找不到此类,调用此方法,可以进行文件包含

<?php
function __autoload($classname){
	include("class.".$classname.".php");
}
$a = new A();//本页面找不到A类,所以会自动调用__autoload()方法,将类文件包含进来,如果需要包含多各类文件,用此方法可以节省编程时间

?>

类文件class.A.php

<?php
class A{
	function hello(){
		echo "hello";
	}
	function __call($functionName,$args){
		echo "你所调用的函数".$functionName."不存在";
		echo "参数:";
		print_r($args);
		echo "不存在";
	}
}
$a=new A();
$a->my('world','hello');
echo "<br>OK";
?>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值