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

PHP 面向对象

2018-01-23 11:37 274 查看
PHP面向对象与JAVA基本相同。

变量 $this 代表自身的对象。

PHP_EOL 为换行符。

使用 new 运算符来实例化该类的对象。

例:

<?php

class Site {

  /* 成员变量 */

  var $url;

  var $title;  

  /* 成员函数 */

  function setUrl($par){

     $this->url = $par;

  }

  function getUrl(){

     echo $this->url . PHP_EOL;

  }

  function setTitle($par){

     $this->title = $par;

  }

  function getTitle(){

     echo $this->title . PHP_EOL;

  }

}

$runoob = new Site;

$taobao = new Site;

$google = new Site;

// 调用成员函数,设置标题和URL

$runoob->setTitle( "W3Cschool教程" );

$taobao->setTitle( "淘宝" );

$google->setTitle( "Google 搜索" );

$runoob->setUrl( 'www.youj.com' );

$taobao->setUrl( 'www.taobao.com' );

$google->setUrl( 'www.google.com' );

// 调用成员函数,获取标题和URL

$runoob->getTitle();

$taobao->getTitle();

$google->getTitle();

$runoob->getUrl();

$taobao->getUrl();

$google->getUrl();

?>

运行后的结果:

菜鸟教程

淘宝

Google 搜索

www.runoob.com

www.taobao.com

www.google.com

构造函数

主要用来在创建对象时初始化对象,
即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中

void __construct ([ mixed $args [, $... ]] )



析构函数

析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。

void __destruct ( void )

继承

PHP
使用关键字 extends 来继承一个类,PHP
不支持多继承。

方法重写

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写

访问控制

public(公有):公有的类成员可以在任何地方被访问。
protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问
private(私有):私有的类成员则只能被其定义所在的类访问
接口

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有,这是接口的特性。

要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分

隔多个接口的名称。

常量


PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。


Static 关键字

声明类属性或方法为 static(静态),就可以不实例化类而直接访问。

静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。

由于静态方法不需要通过对象即可调用,所以伪变量
$this 在静态方法中不可用。

静态属性不可以由对象通过
-> 操作符来访问。


PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 selfparentstatic

final关键字

如果父类中的方法被声明为
final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

调用父类构造方法

PHP
不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,

需要在子类的构造方法中调用 parent::__construct() 。

例:

<?php
class BaseClass {
function __construct() {
print "BaseClass 类中构造方法" . PHP_EOL;
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
print "SubClass 类中构造方法" . PHP_EOL;
}
}
class OtherSubClass extends BaseClass {
// 继承 BaseClass 的构造方法
}

// 调用 BaseClass 构造方法
$obj = new BaseClass();

// 调用 BaseClass、SubClass 构造方法
$obj = new SubClass();

// 调用 BaseClass 构造方法
$obj = new OtherSubClass();
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: