[学习笔记]php中的重载与自动加载

来源:互联网 发布:手机淘宝可以买彩票吗? 编辑:程序博客网 时间:2024/06/18 12:09
重载技术
通常含义:
在一个类(对象)中有多个名字相同但形参不同的方法的现象。
重载在php中的含义:
当对一个对象或类使用其未定义的属性或方法的时候,其中的一些“处理机制”

属性重载:
取值:当对一个对象的不存在的属性进行“取值”的时候,就会自动调用方法:__GET()   //可以有一个形参,记录名字
赋值:当对当对一个对象的不存在的属性进行“赋值”的时候,就会自动调用方法:__SET()//可以有两个形参,名字 值
判断(isset):当对一个对象的不存在的属性进行“isset判断”的时候,就会自动调用方法:__isset()
销毁(unset):当对一个对象的不存在的属性进行“unset销毁”的时候,就会自动调用方法:__unset()
注:前提是类中存在(定义)了这些方法的具体内容。
   被称为魔术方法
方法重载:
当对一个对象的不存在的方法进行“调用”的时候,会自动调用类中的__call()这个魔术方法
__call($methedName,$argument){}
//必须带两个形参:方法名 实参数据(是一个数组)
接口interface
只能放抽象方法和常亮的一种类

定义形式:
interface 接口名{
常亮1;
常亮2;
……
抽象方法;
}
使用:接口名称::常量名称;
//抽象方法不用abstact修饰

接口对没有多继承的类之间关系的一个补充;
class xxx implements xxx,xxx{}
//实现接口
$rec = mysql_fetch_assoc($result);  //数据匹配到数组$rec



类的自动加载 __autoload
含义:
当某行代码需要一个类的会后,php的内部机制可以做到“自动加载该类文件”,以满足该行需要一个类的这种需求。
什么时候需要一个类:
1.new一个对象的时候;
2.使用一个类的静态方法的时候;
3.习惯上,类文件的命名要有一定的“规则”,通常是:类名.class.php
4.通常,我们需要将各种类,存储在一些特定的目录中,以方便确定其位置
5.在该自动加载的函数中,充分使用传过来的类名,以构建一个合适的文件路径并载入。
function __autoload($class_name){
require "./class/".$class_name.".class.php";

}
$obj1=new A();  //此时需要A这个类,就会自动调用__autoload函数,并将A类名(字符串)传过去

自动加载函数(自定义)
spl_autoload_register("autoload1");

@作用:不报错??

例:<?php
spl_autoload_register("autoload1");
spl_autoload_register("autoload2");

function autoload1($class_name){
$file = './class'.$class_name.'.class.php';
if(file_exists($file)){
include_once $file;
}
}
function autoload2($class_name){
$file = './lib'.$class_name.'.class.php';
if(file_exists($file)){
include_once $file;
}
}

$a1=new A();  //这个类在class目录下
var_dump($a1);
$b1=new B();//这个类在lib目录下
var_dump($b1);
原创粉丝点击