长沙PHP培训
达内长沙芙蓉路中心

15017569023

热门课程

方法重载、方法覆盖、魔术函数实现

  • 时间:2016-10-31 07:56
  • 发布:长沙达内php培训学校
  • 来源:PHP教程

长沙达内PHP培训的老师今天给大家讲方法重载(重写)/方法覆盖、魔术函数实现

方法重载

函数名不一样通过函数的参数个数或者参数类型不同,达到调用同一个函数名,但是可以区分不同的函数

class A{

public function test1(){

echo "test1";}

public function test1($a){

echo "test1 hhh";}

}

重载

$a=newA();

$a->test1();

$a->test1(222);

上面的这种用法是不对的

魔术函数方法重载实现

class A{

public function test1($p){

echo "接受一个参数";}

public function test1($p){

echo "接受二个参数";}

}

提供一个__call

__call是它一个对象调用某个方法,而该方法不存在,则系统会自动调用__call

function __call($method,$p){

var_dump($p);

if($method=="test1"){

if(count($p)==1){

$this->test1($p);

}else if(count($p)==2){

$this->test2($p);

}

}

}

$a=newA();

$a->test(1);

$a->test(1,2);

魔术函数

__set,__get,__construct,__destruct,__call,__isset,__unset

__LINE__输出多少行

,__FILE__输出文件名

,__DIR__,

__CLASS__输出类名

方法重写/方法覆盖(overload)

<?php

class Animal{

public $name;

protected $price;

function cry(){

echo "不知道";}

}

class Dog extends Animal{

//覆盖

function cry(){

echo "小狗";}

}

class Pig extends Animal{

//覆盖

function cry(){

echo "小猪";}

}

$dog1=new Dog();

$dog1->cry();

$pig=1new Pig();

$pig1->cry();

?>

关于重写:

当一个父类知道所有的子类都有一个方法但是父类不能确定该方法究竟如何写,可以让子类去覆盖这个方法

1.要实现重写,要求子类的那个方法的名字和参数列表一模一样,但是并不要求参数名称一样

2.如果子类要求调用父类的某个方法(public/protected)则可以使用parent::方法名(参数...),父类名::方法名(参数...)

3.在实现方法覆盖的时候,访问修饰符可不一样,但是必须满足子类的访问范围>=父类的访问范围

多态体现在什么地方

当子类没用覆盖父类的方法则$call->cry()调用的是父类,子类覆盖父类的方法则调用自己的cry()

长沙达内PHP培训的老师讲到这里你有没有听懂了呢?

上一篇:php常用的时间函数
下一篇:php+websocket搭建简易聊天室

马上预约三天免费体验课

姓名:

电话:

hp中urlencode()和urldecode()URL编码函数

php的冒泡排序和快速排序

前端学PHP之变量

PHP实现随机数和方程求解

选择城市和中心
贵州省

广西省

海南省