PHP 面向对象学习笔记总结

来源:互联网 发布:迅雷看看mac版下载 编辑:程序博客网 时间:2024/05/16 03:35

终于花了一天的时间学习了PHP面向对象思想。特总结如下:

 

单双引号的区别:” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。

‘ ‘ 单引号里面的不进行解释,直接输出。

 

1。多态例子:

电脑上有USB接口。但是usb接口可能有多种用途比如mp3或者优盘的功能。

interface Usb{
 function drive();
 function alert();

}

class Zip implements Usb{
 function drive(){
  echo "usb2.0";
 }

 function alert(){
  echo "这是一个优盘";
  }
}

class Mp3 implements Usb{
 function drive(){
  echo "usb1.0";
 }

 function alert(){
  echo "这是一个MP3";
  }
}

class Pc {
 function checkUsb($what){
  $what->drive();
  $what->alert();
 }
}

$myPc = new Pc();
$myMp3 = new Mp3();
$myZip = New Zip;
$myPc->checkUsb($myMp3);//此处输入mp3的类的对象传入
$myPc->checkUsb($myZip);

 

final 用于class 或者function, class用final则不能继承,function用final后不能重载

 

static 用于function后。函数内不能使用非静态的字段。

 

self可以用于访问静态字段和常量 例如self::$name

 

const申明时不需要$符合 例如 const NAME

 

怎么样去覆盖父类函数:

class Root{
protected $name ="父亲";
function getRootName(){
 return $this->name."在耍游戏";
}

}

 

class Child extends Root{
 protected $name = "孩子";
 function getRootName(){ //子类覆盖了父类的函数
  return Root::getRootName()."在耍游戏";//调用父类的函数
 }
}

$myroot = new Child();
echo $myroot->getRootName();

 

申明抽象类。抽象类没有方法体,需被继承后实现里面的所有方法才可以调用,抽象类里面可以申明变量。

abstract class classA{
 abstract function funA();
 abstract function funB();
}

class classB extends classA{
 function funA(){
  return "我实例化了抽象函数";
 }
}

$myclassb = new classB();
echo $myclassb->funA();

 

申明接口类。其实接口类是一个特殊的抽象类。接口也没有方法体。必须有类实现此接口所有方法后可使用。但是申明的变量必须为常量const。 同时接口类可以继承抽象类。例如

interface demo{
const NAME="接口必须为常量";
function funA();
function funB();
}

 

//抽象类

abstract class ClassD implements demo{
 public $name1="抽象类的属性";
 //接口实现的funA()和funB()

function funA(){
    echo "实现接口的抽象方法!";
 }
 function funB(){
 }

//抽象类的方法
 abstract function funC($name1);
}

//实现抽象类的方法

class ClassE extends ClassD{
 function funC($nameE){
  echo "实现了抽象类的方法";
 }
}

$classE = new ClassE();
$classE->funA(); //输出实现接口的抽象方法!

$classE->funC(); //输出实现了抽象类的方法

 

2。三元运算符 e1?e2:e3 (如果e1为真那么输出e2,为假输出e3)

例如 echo (2>3)?"真":"假";

 

3. 怎样输出数组的值

$myArray = array(
"sun"=>"123",
"moon"=>"456"
);

foreach($myArray as $key1=>$value){
 echo $key1."=>".$value."<br>";
}

 

4。 使用instanceof 判断类对象

$classE = new ClassE();
if ($classE instanceof ClassE) echo "这是真的"

 

5. 使用__set($name, $value)方法设置类的私有变量访问

    使用__get()方法设置类私有累变量的设置

 class ClassA {
 private $name;

 function __construct($n){
  echo "构造函数";
  $this->name = $n; //注意如果此行改为$this->$name = $n 则$name 不能成功赋值。自己也没搞懂有什么不同???
 }
 function __set($n,$v){
  $this->$n = $v;
 }

 function __get($name){
  return $this->name;
 }
 
 function destruct(){
 
 }
}

$classA = new ClassA('etetet');
echo $classA->$name;
$classA->name = "wydfdg";
echo $classA->$name;

原创粉丝点击