您的位置:首页 > 编程语言 > PHP开发

PHP 面向对象学习笔记总结

2010-04-14 22:37 976 查看
终于花了一天的时间学习了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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: