PHP面向?qū)ο蟪绦蛟O(shè)計(jì)方法實(shí)例詳解
本文實(shí)例分析了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)方法。分享給大家供大家參考,具體如下:
PHP5開始支持面向?qū)ο?,示例如下?#65279;
<?php
class classname{
var $attr1;
var $attr2;
public $attribute;
const PI = 3.14;
// 構(gòu)造函數(shù)
function __construct($param = 'default'){
echo "Constructor called with parameter $param<br />";
}
// 析構(gòu)函數(shù)
function __destruct(){
echo '<br />destruct';
}
//
function oper1(){
echo 'oper1<br />';
}
function oper2($param){
$this->attr1 = $param;
echo $this->attr1;
}
protected function oper3(){
echo 'this is protected function<br />';
}
// 禁止繼承
final function oper5(){
}
function __get($name){
return $this->$name;
}
function __set($name, $value){
$this->$name = $value;
}
// 靜態(tài)方法
static function double($param){
return $param * $param;
}
}
$a = new classname('First');
$b = new classname('Second');
$c = new classname();
$c->oper2("hello");
echo '<br />';
echo $c->attr1;
echo '<br /><br />';
echo ' Per-Class常量 classname::PI -'.classname::PI;
echo '<br />靜態(tài)方法: classname::double(3) - ' . classname::double(3);
echo '<br />';
// 實(shí)現(xiàn)繼承
echo '實(shí)現(xiàn)繼承<br />';
class B extends classname{
function oper4(){
$this->oper3(); // protected方法只能在
}
function oper1(){ // 重載
echo 'this is class B /'s oper1. <br />';
}
}
$d = new B("forth");
$d->oper1();
$d->oper4();
// 接口
interface Displayable
{
function display();
function show();
}
class C implements Displayable
{
function display(){
echo '這是對(duì)應(yīng)接口的方法.<br />';
}
function show(){}
}
$e = new C();
$e->display();
echo '檢查$e是否為C的實(shí)例:';
echo ($e instanceof C) ? 'Yes':'No';
// 克隆對(duì)象
$f = clone $e;
echo '<br /><br />可以使用__clone()方法,在使用clone關(guān)鍵字時(shí)調(diào)用';
// 抽象類
abstract class E{}
// $f = new E(); // 這行將報(bào)錯(cuò),不能實(shí)例化抽象類
// 參數(shù)重載,多態(tài)
class F{
public $a = 1;
public $b = 2;
public $c = 3;
function displayString($elem){
echo '<br />string:'.$elem;
}
function displayInt($elem){
echo '<br />int:'.$elem;
}
// 注意參數(shù)$p,是作為數(shù)組傳入,必須使用下標(biāo)訪問
function __call($method, $p){
if ($method == 'display'){
if (is_string($p[0])){
$this->displayString($p[0]);
} else {
$this->displayInt($p[0]);
}
}
}
}
$g = new F();
$g->display('abc');
// 迭代器,讀出實(shí)例的所有屬性
foreach ($g as $att){
echo '<br />'.$att;
}
// 反射
echo '<br />';
$class = new ReflectionClass('F');
echo '<pre>';
echo $class;
echo '</pre>';
?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語(yǔ)法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php類的定義與繼承用法實(shí)例
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)OOP繼承用法入門示例
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)高級(jí)特性詳解(接口,繼承,抽象類,析構(gòu),克隆等)
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之命名空間與自動(dòng)加載類詳解
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之類與反射API詳解
- PHP面向?qū)ο笞詣?dòng)加載機(jī)制原理與用法分析
- PHP入門教程之面向?qū)ο蟮奶匦苑治?繼承,多態(tài),接口,抽象類,抽象方法等)
- PHP入門教程之面向?qū)ο蠡靖拍顚?shí)例分析
- PHP 面向?qū)ο?final類與final方法
- PHP面向?qū)ο笾?深入理解static變量與方法
- php面向?qū)ο笾衧tatic靜態(tài)屬性和靜態(tài)方法的調(diào)用
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)類的定義與用法簡(jiǎn)單示例
相關(guān)文章
PHP向socket服務(wù)器收發(fā)數(shù)據(jù)的方法
這篇文章主要介紹了PHP向socket服務(wù)器收發(fā)數(shù)據(jù)的方法,分析了socket收發(fā)數(shù)據(jù)的方法,并介紹了socket常用函數(shù),需要的朋友可以參考下2015-01-01
php 批量生成html,txt文件的實(shí)現(xiàn)代碼
本篇文章是對(duì)使用php批量生成html,txt文件的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP+MySQL實(shí)現(xiàn)輸入頁(yè)碼跳轉(zhuǎn)到指定頁(yè)面功能示例
這篇文章主要介紹了PHP+MySQL實(shí)現(xiàn)輸入頁(yè)碼跳轉(zhuǎn)到指定頁(yè)面功能,結(jié)合實(shí)例形式分析了php連接mysql數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢及分頁(yè)顯示、指定頁(yè)數(shù)跳轉(zhuǎn)顯示等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Array of country list in PHP with Zend Framework
Array of country list in PHP with Zend Framework,需要的朋友可以參考下。2011-10-10

