源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP类相关知识点实例总结

  • 时间:2020-03-22 14:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP类相关知识点实例总结
本文实例总结了PHP类相关知识点。分享给大家供大家参考,具体如下: [b]最终类与最终方法[/b] 如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
final class a{}
class a{
  final public function A(){}
}

[b]抽象类与抽象方法[/b]
abstract class a {
  public abstract function func();
}
class A extends a{
  public function func(){}
}

① 一个类可以使用abstract声明为抽象类;抽象类是不能实例化的类,只用作其他类的父类。
abstract class name{}

② 一个方法可以使用abstract声明为抽象方法;抽象方法只需要声明方法头,不需要大括号部分的方法体。
abstract public function name($val);

③ 一个类中有抽象方法,则该类必须声明为抽象类。 ④ 子类继承自一个抽象类,则子类不行实现父类中的所有抽象方法,除非子类也继续作为抽象类。 ⑤ 子类实现抽象父类的方法时,访问控制符范围不能降低,且方法的参数也必须一致(重写)。 [b]接口[/b] 接口可以看作是抽象类的更高层面的抽象,可以说是抽象类的特例
interface a{
  function func();
}
class A implements a {
  function func(){}
}

类:属性、类常量、方法 抽象类:属性、类常量、抽象方法 接口:接口常量、抽象方法 ① 相比抽象类,接口可实现‘多继承'
class A implements a,b,c{}

② 一个接口只能继承一个接口
interface a extends b{}

③ 其中方法都是抽象方法不用abstract修饰,即下级类要么实现接口的方法(implements),要么也声明为抽象方法 [b]重载技术[/b] 1. 属性重载:如果使用一个不存在的属性,就会调用类中预先定义好的某个方法以处理数据; 对于属性不用的应用场景,做如下处理 ① 取值:自动调用类中的__get() ② 赋值:自动调用类中的__set() ③ 判断是否存在:自动调用类中的__isset() ④ 销毁:自动调用类中的__unset() 前提是预先定义好这些方法,否则会报错
<?php
class bee{
  public $ol = array();
  public function __get($key){
    if(isset($this->ol[$key])){
      return $this->ol[$key];
    }
    return $key.' not exists';
  }
  public function __set($key,$val){
    $this->ol[$key] = $val;
  }
  public function __isset($key){
    if(isset($this->ol[$key])){
      return true;
    }
    return false;
  }
  public function __unset($key){
    unset($this->ol[$key]);
  }
}
$obj = new bee();
echo $obj->one;
echo '<br>';
$obj->one = 1;
echo $obj->one;
echo '<br>';
var_dump(isset($obj->one));

运行结果如下:
one not exists
1
boolean true

2. 方法重载:如果使用一个不存在的方法,就会调用类中预先定义好的某个方法以处理该行为; 对于方法不用的应用场景,做如下处理 ① 在对象中调用不可访问的方法:__call() ② 静态方式中调用不可访问方法:__callStatic()
<?php
class bee{
  public function __call($name,$arr){
    echo '<br>';
    echo 'function '.$name.' not exist';
  }
  static function __callStatic($name,$arr){
    echo '<br>';
    echo 'function '.$name.' not exist';
  }
  /*public function __call($name,$arr){
    $num = count($arr);
    if($num<1){
      $name();
    }else{
      $name = $name.'_one';
      $name($arr[0]);
    }
  }*/
}
$obj->func();
bee::staFunc();
/*$obj->func(1);
function func(){
  echo '<br>';
  echo 'no.0';
}
function func_one($val){
  echo '<br>';
  echo 'no.'.$val;
}*/

运行结果如下:
function func not exist
function staFunc not exist

注意:以上方法都属于魔术方法,都带有参数 更多关于PHP相关内容感兴趣的读者可查看本站专题:《[url=http://www.1sucai.cn/Special/43.htm]php面向对象程序设计入门教程[/url]》、《[url=http://www.1sucai.cn/Special/348.htm]PHP基本语法入门教程[/url]》、《[url=http://www.1sucai.cn/Special/357.htm]PHP运算与运算符用法总结[/url]》、《[url=http://www.1sucai.cn/Special/495.htm]PHP网络编程技巧总结[/url]》、《[url=http://www.1sucai.cn/Special/623.htm]PHP数组(Array)操作技巧大全[/url]》、《[url=http://www.1sucai.cn/Special/47.htm]php字符串(string)用法总结[/url]》、《[url=http://www.1sucai.cn/Special/84.htm]php+mysql数据库操作入门教程[/url]》及《[url=http://www.1sucai.cn/Special/231.htm]php常见数据库操作技巧汇总[/url]》 希望本文所述对大家PHP程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部