php面向对象编程代码怎么写,php面向对象编程(一)
類與對(duì)象關(guān)系:
類就像一個(gè)人類的群體 我們從類中實(shí)例化一個(gè)對(duì)象 就像是制定一個(gè)人。
面向?qū)ο蟪绦虻膯挝痪褪菍?duì)象,但對(duì)象又是通過類的實(shí)例化出來的,所以我們首先要做的就是如何來聲明類, 做出來一個(gè)類很容易。
類的格式
class 類名 { }
類可以理解為一個(gè)人的群體,如果我們要把這個(gè)人介紹給別人 那么
首先, 你會(huì)介紹這個(gè)人姓名、性別、年齡、身高、體重、電話、家庭住址等等。
然后,你要介紹這個(gè)人能做什么, 可以開車, 會(huì)說英語, 可以使用電腦等等。
從定義的角度可以分為:
1.靜態(tài)的描述 如:人的姓名、性別、年齡、身高、體重、電話、家庭住址等等 我們將靜態(tài)的描述稱為成員屬性
我們可以用var 來定義 如 var $description ;此時(shí)我們應(yīng)該注意的是聲明沒有必要賦值 ,如人的名字叫小明 有可能在這個(gè)人群中找到幾十個(gè)小明
2.動(dòng)態(tài)描述 ?如:這個(gè)人可以開車, 會(huì)說英語, 可以使用電腦等等 ? 我們將動(dòng)態(tài)的描述稱為成員方法
class 人
{
成員屬性:姓名、性別、年齡、身高、體重、電話、家庭住址
成員方法:可以開車, 會(huì)說英語, 可以使用電腦
}
{//下面是人的成員屬性
var $name; //人的名子
var $sex; //人的性別
var $age; //人的年齡
// 下面是人的成員方法
function say() //這個(gè)人可以說話的方法
{echo "這個(gè)人在說話";
}function run() //這個(gè)人可以走路的方法
{echo "這個(gè)人在走路";
}
}?>
當(dāng)定義好一個(gè)類后 我們需要實(shí)例化那個(gè)類才能使用
用new的關(guān)鍵詞 ?$對(duì)象名稱 = new 類名稱();
class Person
{
//下面是人的成員屬性
var $name; //人的名子
var $sex; //人的性別
var $age; //人的年齡
//下面是人的成員方法
function say() { //這個(gè)人可以說話的方法
echo "這個(gè)人在說話";
}
function run() { //這個(gè)人可以走路的方法
echo "這個(gè)人在走路";
}
}
$p1=new Person();
$p2=new Person();
$p3=new Person();
?>
現(xiàn)在我們示例化類已經(jīng)好了我們就要去學(xué)會(huì)如何使用類中的成員
對(duì)象->屬性 $p1->name; $p2->age; $p3->sex;
對(duì)象->方法 $p1->say(); $p2->run()
class Person
{
// 下面是人的成員屬性
var $name;// 人的名子
var $sex;// 人的性別
var $age;// 人的年齡
// 下面是人的成員方法
function say() // 這個(gè)人可以說話的方法
{
echo "這個(gè)人在說話";
}
function run() // 這個(gè)人可以走路的方法
{
echo "這個(gè)人在走路";
}
}
$p1 = new Person(); //創(chuàng)建實(shí)例對(duì)象$p1
$p2 = new Person(); //創(chuàng)建實(shí)例對(duì)象$p2
$p3 = new Person(); //創(chuàng)建實(shí)例對(duì)象$p3
// 下面三行是給$p1對(duì)象屬性賦值
$p1->name = "張三";
$p1->sex = "男";
$p1->age = 20;
// 下面三行是訪問$p1對(duì)象的屬性
echo "p1對(duì)象的名子是:" . $p1->name;
echo "p1對(duì)象的性別是:" . $p1->sex;
echo "p1對(duì)象的年齡是:" . $p1->age;
// 下面兩行訪問$p1對(duì)象中的方法
$p1->say();
$p1->run();
// 下面三行是給$p2對(duì)象屬性賦值
$p2->name = "李四";
$p2->sex = "女";
$p2->age = 30;
// 下面三行是訪問$p2對(duì)象的屬性
echo "p2對(duì)象的名子是:" . $p2->name;
echo "p2對(duì)象的性別是:" . $p2->sex;
echo "p2對(duì)象的年齡是:" . $p2->age;
// 下面兩行訪問$p2對(duì)象中的方法
$p2->say();
$p2->run();
// 下面三行是給$p3對(duì)象屬性賦值
$p3->name="王五";
$p3->sex="男";
$p3->age=40;
// 下面三行是訪問$p3對(duì)象的屬性
echo "p3對(duì)象的名子是:" . $p3->name;
echo "p3對(duì)象的性別是:" . $p3->sex;
echo "p3對(duì)象的年齡是:" . $p3->age;
// 下面兩行訪問$p3對(duì)象中的方法
$p3->say();
$p3->run();
?>
此時(shí)類我們已經(jīng)基本可以使用了 但是我們發(fā)現(xiàn)還是有點(diǎn)不足 就是我們可以在外部進(jìn)行訪問,但是不能在內(nèi)部進(jìn)行訪問 我們引進(jìn)一個(gè)概念“this”的用法 ? 如果可以對(duì)內(nèi)部進(jìn)行訪問賦值 那么將減少我們的代碼量
class Person
{
// 下面是人的成員屬性
var $name; //人的名子
var $sex; //人的性別
var $age; //人的年齡
// 下面是人的成員方法
function say() // 這個(gè)人可以說話的方法
{
echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;
}
function run() // 這個(gè)人可以走路的方法
{
echo "這個(gè)人在走路";
}
}
$p1 = new Person(); // 創(chuàng)建實(shí)例對(duì)象$p1
$p2 = new Person(); // 創(chuàng)建實(shí)例對(duì)象$p2
$p3 = new Person(); // 創(chuàng)建實(shí)例對(duì)象$p3
// 下面三行是給$p1對(duì)象屬性賦值
$p1->name = "張三";
$p1->sex = "男";
$p1->age = 20;
// 下面訪問$p1對(duì)象中的說話方法
$p1->say();
// 下面三行是給$p2對(duì)象屬性賦值
$p2->name = "李四";
$p2->sex = "女";
$p2->age = 30;
// 下面訪問$p2對(duì)象中的說話方法
$p2->say();
// 下面三行是給$p3對(duì)象屬性賦值
$p3->name = "王五";
$p3->sex = "男";
$p3->age = 40;
// 下面訪問$p3對(duì)象中的說話方法
$p3->say();
?>
分析一下
function say() // 這個(gè)人可以說話的方法
{
echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;
}
上面代碼中$this指的是對(duì)其進(jìn)行賦值的對(duì)象。
構(gòu)造方法__construct()與析構(gòu)方法__destruct()
構(gòu)造方法__construct():即自動(dòng)使用new的方法實(shí)現(xiàn)對(duì)象的實(shí)例化(可以理解為為實(shí)現(xiàn)能在實(shí)例化對(duì)象的時(shí)候傳入?yún)?shù)構(gòu)建一道橋梁)。理解為一個(gè)隊(duì)列
// 創(chuàng)建一個(gè)人類
class Person
{
// 下面是人的成員屬性
var $name;// 人的名子
var $sex;// 人的性別
var $age;// 人的年齡
// 定義一個(gè)構(gòu)造方法參數(shù)為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age)
{
// 通過構(gòu)造方法傳進(jìn)來的$name給成員屬性$this->name賦初使值
$this->name = $name;
// 通過構(gòu)造方法傳進(jìn)來的$sex給成員屬性$this->sex賦初使值
$this->sex = $sex;
// 通過構(gòu)造方法傳進(jìn)來的$age給成員屬性$this->age賦初使值
$this->age = $age;
}
// 這個(gè)人的說話方法
function say()
{
echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;
}
}
// 通過構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡
$p1 = new Person("張三","男", 20);
$p2 = new Person("李四","女", 30);
$p3 = new Person("王五","男", 40);
// 下面訪問$p1對(duì)象中的說話方法
$p1->say();
// 下面訪問$p2對(duì)象中的說話方法
$p2->say();
// 下面訪問$p3對(duì)象中的說話方法
$p3->say();
?>
輸出結(jié)果為:
我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40
析構(gòu)方法__destruct():析構(gòu)函數(shù)允許在銷毀一個(gè)類之前進(jìn)行一些列的操作 ? 一個(gè)類的析構(gòu)函數(shù)必須是__destruct() ?注意的是析構(gòu)函數(shù)不能附帶任何的參數(shù) 理解為一個(gè)棧
// 創(chuàng)建一個(gè)人類
class Person
{
// 下面是人的成員屬性
var $name;// 人的名子
var $sex;// 人的性別
var $age;// 人的年齡
// 定義一個(gè)構(gòu)造方法參數(shù)為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age)
{
// 通過構(gòu)造方法傳進(jìn)來的$name給成員屬性$this->name賦初使值
$this->name = $name;
// 通過構(gòu)造方法傳進(jìn)來的$sex給成員屬性$this->sex賦初使值
$this->sex = $sex;
// 通過構(gòu)造方法傳進(jìn)來的$age給成員屬性$this->age賦初使值
$this->age = $age;
}
// 這個(gè)人的說話方法
function say()
{
echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;
}
// 這是一個(gè)析構(gòu)函數(shù),在對(duì)象銷毀前調(diào)用
function __destruct()
{
echo "再見" . $this->name;
}
}
// 通過構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡
$p1 = new Person("張三", "男", 20);
$p2 = new Person("李四", "女", 30);
$p3 = new Person("王五", "男", 40);
// 下面訪問$p1對(duì)象中的說話方法
$p1->say();
// 下面訪問$p2對(duì)象中的說話方法
$p2->say();
// 下面訪問$p3對(duì)象中的說話方法
$p3->say();
?>
輸出結(jié)果為:
我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40
再見王五
再見李四
再見張三
總結(jié)
以上是生活随笔為你收集整理的php面向对象编程代码怎么写,php面向对象编程(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重装win10 安装失败怎么办 win1
- 下一篇: 怎么修改bios降低风扇转速 BIOS如