php面向對象編程代碼怎么寫,php面向對象編程(一)

類與對象關系:

類就像一個人類的群體 我們從類中實例化一個對象 就像是制定一個人。

面向對象程序的單位就是對象,但對象又是通過類的實例化出來的,所以我們首先要做的就是如何來聲明類, 做出來一個類很容易。

類的格式

class 類名 { }

類可以理解為一個人的群體,如果我們要把這個人介紹給別人 那么

首先, 你會介紹這個人姓名、性別、年齡、身高、體重、電話、家庭住址等等。

然后,你要介紹這個人能做什么, 可以開車, 會說英語, 可以使用電腦等等。

從定義的角度可以分為:

1.靜態的描述 如:人的姓名、性別、年齡、身高、體重、電話、家庭住址等等 我們將靜態的描述稱為成員屬性

我們可以用var 來定義 如 var $description ;此時我們應該注意的是聲明沒有必要賦值 ,如人的名字叫小明 有可能在這個人群中找到幾十個小明

2.動態描述 ?如:這個人可以開車, 會說英語, 可以使用電腦等等 ? 我們將動態的描述稱為成員方法

class 人

{

成員屬性:姓名、性別、年齡、身高、體重、電話、家庭住址

成員方法:可以開車, 會說英語, 可以使用電腦

}

{//下面是人的成員屬性

var $name; //人的名子

var $sex; //人的性別

var $age; //人的年齡

// 下面是人的成員方法

function say() //這個人可以說話的方法

{echo "這個人在說話";

}function run() //這個人可以走路的方法

{echo "這個人在走路";

}

}?>

當定義好一個類后 我們需要實例化那個類才能使用

用new的關鍵詞 ?$對象名稱 = new  類名稱();

class Person

{

//下面是人的成員屬性

var $name; //人的名子

var $sex; //人的性別

var $age; //人的年齡

//下面是人的成員方法

function say() { //這個人可以說話的方法

echo "這個人在說話";

}

function run() { //這個人可以走路的方法

echo "這個人在走路";

}

}

$p1=new Person();

$p2=new Person();

$p3=new Person();

?>

現在我們示例化類已經好了我們就要去學會如何使用類中的成員

對象->屬性 $p1->name; $p2->age; $p3->sex;

對象->方法 $p1->say(); $p2->run()

class Person

{

// 下面是人的成員屬性

var $name;// 人的名子

var $sex;// 人的性別

var $age;// 人的年齡

// 下面是人的成員方法

function say() // 這個人可以說話的方法

{

echo "這個人在說話";

}

function run() // 這個人可以走路的方法

{

echo "這個人在走路";

}

}

$p1 = new Person(); //創建實例對象$p1

$p2 = new Person(); //創建實例對象$p2

$p3 = new Person(); //創建實例對象$p3

// 下面三行是給$p1對象屬性賦值

$p1->name = "張三";

$p1->sex = "男";

$p1->age = 20;

// 下面三行是訪問$p1對象的屬性

echo "p1對象的名子是:" . $p1->name;

echo "p1對象的性別是:" . $p1->sex;

echo "p1對象的年齡是:" . $p1->age;

// 下面兩行訪問$p1對象中的方法

$p1->say();

$p1->run();

// 下面三行是給$p2對象屬性賦值

$p2->name = "李四";

$p2->sex = "女";

$p2->age = 30;

// 下面三行是訪問$p2對象的屬性

echo "p2對象的名子是:" . $p2->name;

echo "p2對象的性別是:" . $p2->sex;

echo "p2對象的年齡是:" . $p2->age;

// 下面兩行訪問$p2對象中的方法

$p2->say();

$p2->run();

// 下面三行是給$p3對象屬性賦值

$p3->name="王五";

$p3->sex="男";

$p3->age=40;

// 下面三行是訪問$p3對象的屬性

echo "p3對象的名子是:" . $p3->name;

echo "p3對象的性別是:" . $p3->sex;

echo "p3對象的年齡是:" . $p3->age;

// 下面兩行訪問$p3對象中的方法

$p3->say();

$p3->run();

?>

此時類我們已經基本可以使用了 但是我們發現還是有點不足 就是我們可以在外部進行訪問,但是不能在內部進行訪問 我們引進一個概念“this”的用法 ? 如果可以對內部進行訪問賦值 那么將減少我們的代碼量

class Person

{

// 下面是人的成員屬性

var $name; //人的名子

var $sex; //人的性別

var $age; //人的年齡

// 下面是人的成員方法

function say() // 這個人可以說話的方法

{

echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;

}

function run() // 這個人可以走路的方法

{

echo "這個人在走路";

}

}

$p1 = new Person(); // 創建實例對象$p1

$p2 = new Person(); // 創建實例對象$p2

$p3 = new Person(); // 創建實例對象$p3

// 下面三行是給$p1對象屬性賦值

$p1->name = "張三";

$p1->sex = "男";

$p1->age = 20;

// 下面訪問$p1對象中的說話方法

$p1->say();

// 下面三行是給$p2對象屬性賦值

$p2->name = "李四";

$p2->sex = "女";

$p2->age = 30;

// 下面訪問$p2對象中的說話方法

$p2->say();

// 下面三行是給$p3對象屬性賦值

$p3->name = "王五";

$p3->sex = "男";

$p3->age = 40;

// 下面訪問$p3對象中的說話方法

$p3->say();

?>

分析一下

function say() // 這個人可以說話的方法

{

echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;

}

上面代碼中$this指的是對其進行賦值的對象。

構造方法__construct()與析構方法__destruct()

構造方法__construct():即自動使用new的方法實現對象的實例化(可以理解為為實現能在實例化對象的時候傳入參數構建一道橋梁)。理解為一個隊列

// 創建一個人類

class Person

{

// 下面是人的成員屬性

var $name;// 人的名子

var $sex;// 人的性別

var $age;// 人的年齡

// 定義一個構造方法參數為姓名$name、性別$sex和年齡$age

function __construct($name, $sex, $age)

{

// 通過構造方法傳進來的$name給成員屬性$this->name賦初使值

$this->name = $name;

// 通過構造方法傳進來的$sex給成員屬性$this->sex賦初使值

$this->sex = $sex;

// 通過構造方法傳進來的$age給成員屬性$this->age賦初使值

$this->age = $age;

}

// 這個人的說話方法

function say()

{

echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;

}

}

// 通過構造方法創建3個對象$p1、p2、$p3,分別傳入三個不同的實參為姓名、性別和年齡

$p1 = new Person("張三","男", 20);

$p2 = new Person("李四","女", 30);

$p3 = new Person("王五","男", 40);

// 下面訪問$p1對象中的說話方法

$p1->say();

// 下面訪問$p2對象中的說話方法

$p2->say();

// 下面訪問$p3對象中的說話方法

$p3->say();

?>

輸出結果為:

我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40

析構方法__destruct():析構函數允許在銷毀一個類之前進行一些列的操作 ? 一個類的析構函數必須是__destruct() ?注意的是析構函數不能附帶任何的參數 理解為一個棧

// 創建一個人類

class Person

{

// 下面是人的成員屬性

var $name;// 人的名子

var $sex;// 人的性別

var $age;// 人的年齡

// 定義一個構造方法參數為姓名$name、性別$sex和年齡$age

function __construct($name, $sex, $age)

{

// 通過構造方法傳進來的$name給成員屬性$this->name賦初使值

$this->name = $name;

// 通過構造方法傳進來的$sex給成員屬性$this->sex賦初使值

$this->sex = $sex;

// 通過構造方法傳進來的$age給成員屬性$this->age賦初使值

$this->age = $age;

}

// 這個人的說話方法

function say()

{

echo "我的名子叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this->age;

}

// 這是一個析構函數,在對象銷毀前調用

function __destruct()

{

echo "再見" . $this->name;

}

}

// 通過構造方法創建3個對象$p1、p2、$p3,分別傳入三個不同的實參為姓名、性別和年齡

$p1 = new Person("張三", "男", 20);

$p2 = new Person("李四", "女", 30);

$p3 = new Person("王五", "男", 40);

// 下面訪問$p1對象中的說話方法

$p1->say();

// 下面訪問$p2對象中的說話方法

$p2->say();

// 下面訪問$p3對象中的說話方法

$p3->say();

?>

輸出結果為:

我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40

再見王五

再見李四

再見張三

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534593.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534593.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534593.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

雅馬哈php mt7,雅馬哈專業錄音室監聽耳機 HPH-MT7 正式發售!

從 NS-10M 監聽音箱到 MSP 系列和 HS 系列,雅馬哈始終秉持忠實的設計理念,聚焦聲學精度,為音頻專家提供出色的平臺,構建并成就他們專屬的專業之聲。MT7錄音室監聽耳機承襲了這一基本研發理念,重現最為精細的聲音,力求滿…

php 支付簽名驗證失敗,choosewxpay fail解決,微信支付簽名驗證錯誤解決

require_once("config.php"); //這個文件原來寫過的博客有http://jipq1016.com/display.php?id9//統一下單$openid$_POST[openid];$arr[appid]$appid; //商戶appid$arr[mch_id]$mch_id; //微信支付…

趣學java,編程趣學習app

編程趣學習在這里會有多種編程語言是可以去學習的Java或者是c,入門級的海鷗就是更加有難度的都是可以選擇一個自己可以去學習的課程,跟著講師一同開始及逆行語言基礎知識的學習后面大家就是根據自己的的課后作業完成,去自己調試新的程序。編程…

cgi php腳本運行超時間,php超時 - php-cgi調用外部程序超時,但php在命令行模式下能完整運行外部程序...

運行環境為Ubuntu14.04php腳本無論用Apache還是nginx都會在R語言運行一半時終止運行(在需要等待運行3~5秒時的步驟停止)但用php在命令行模式php -f result.php卻能完整運行。請問是否能通過修改php配置,解決這個問題回復內容:運行環境為Ubuntu14.04php腳…

oracle無法分區,oracle已存在的表添加新分區的方法

現在有一張表如下:create table WRITE_USER(area_code VARCHAR2(8),user_no VARCHAR2(20),user_name VARCHAR2(100),address VARCHAR2(100),mon NUMBER(6),mon_sn NUM…

oracle常用表查詢,ORACLE EBS常用表及查詢語句(最終整理版)

select * from ar_batches_all 事務處理批select * from ra_customer_trx_all 發票頭select * from ra_customer_trx_lines_all 發票行select * from ra_cust_trx_line_gl_dist_all 發票分配select * from ar_cash_receipts_all 收…

aix升級新安裝oracle,安裝Oracle 11gR2 AIX 5.3 升級到TL11的一些小記錄

Dep-app 需要locdevices.usbif.08025002.rtersct.compat.basic.sp打5300-11-00-0943時需要devices.usbif.08025002.rte 5.3.11.0 重啟可以 或 刪除 devices.usbif.08025002.rte 5.3.7.7打5300-11-04-1015時需要bos.sysmgt.sysbr 5.3.11.0 5.3.11.3bos.sysmgt.sysbr 需要bos…

oracle連續狀態相同,數據庫共有三種狀態:quiesce、resrict、suspend

數據庫共有三種狀態:quiesce、resrict、suspend一、quiesce模式首先來說說數據庫的靜默狀態靜默狀態是指數據庫中只存在sys和system用戶建立的活動會話。只有dba能繼續操作數據庫。此狀態下可以進行一些在非靜默狀態下執行可能存在不安全因素的特殊操作。對于必須持…

oracle數據庫連接名是什么,連接到Oracle數據庫的幾種命名方式

連接到Oracle數據庫的幾種命名方式從事 Oracle 相關工作的人,每天都會使用各種工具連接到 Oracle 數據庫,比如:SQL*Plus、PL/SQL、TOAD、SQLDeveloper 等等,下面就列舉了幾種連接到 Oracle 的方式,本例中使用的是 SQL*…

jmeter無法釋放oracle連接,jmeter 連接ORACLE數據庫錯誤及解決方法

問題一:Response message: java.sql.SQLException:Cannot load JDBC driver class ‘oracle.jdbc.driver.OracleDriver‘未引入ojdbc14.jar包所致,2種解決方案,最好重啟一下:1.在測試計劃頁面中,點擊瀏覽,選…

oracle11g ora 12518,servlet執行update報錯ORA-12518

ORA-12518: TNS:listener could not hand off client connection這種錯誤一般是在測試數據庫并發性的,多個用戶的,后臺用servleORA-12518: TNS:listener could not hand off client connection這種錯誤一般是在測試數據庫并發性的,多個用戶的…

linux怎么添加頭文件目錄下,linux下編寫c++,include的那些頭文件在什么地方?

炎炎設計C/C程序在linux下被編譯和連接時,GCC/G會查找系統默認的include和link的路徑,以及自己在編譯命令中指定的路徑。自己指定的路徑就不說了,這里說明一下系統自動搜索的路徑。【1】include頭文件路徑除了默認的/usr/include, /usr/local…

linux內核調度 0號進程,Linux內核源代碼情景分析---第四章?進程與進程調度

4.1 進程四要素什么是進程?1:有一段代碼段供其執行,這代碼段不一定是進程所專用,可以與其他進程公用。2:每個進程有其專用的系統空間的堆棧(棧)【這個棧是進程起碼的“私有財產”】3:在內核中,要…

redhat linux 系統管理,紅帽系統管理一 (RH124)

紅帽系統管理一 (RH124)時間:2018-04-24 14:06:52第 1 部分 — 紅帽企業 Linux 管理員所需掌握的核心系統管理任務本課程涉及使用紅帽 企業 Linux 7。紅帽系統管理一 (RH124) 專為之前沒有 Linux 系統管理經驗的 IT 專業人員設計。本課程側重講解 Linux 系統的核心管…

linux命令行聊天,Linux 下使用talk 進行聊天

Linux中talk命令參數程序用于Internet上兩個用戶之間進行“交談”:通過鍵盤輸入“說話”,通過看終端屏幕“聆聽”。Linux中talk命令參數程序的使用很簡單,只要知道交談對象的地址,就可以邀請對方交談。格式:talk usert…

linux重啟切換內核,ubuntu更新內核切換內核啟動

ubuntu更新內核切換內核啟動1. 查看需要更新的內核命令:apt-cache search linux該命令將會顯示所有可以獲取的內核2. 安裝內核,假設你要安裝的內核為2.6.39-0,則使用下面的命令sudo apt-get install linux-headers-2.6.39-0-generic linux-im…

在linux中which命令,Linux 中 which 命令怎么用?

在Linux中which命令的作用是在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果,其用法為“which [文件...]”,其參數有“-n”、“-p”、“-w”和“-V”。Linux which命令用于查找文件。which指令會在環境變量…

linux對硬盤進行分區嗎,Linux下如何對硬盤進行分區

免費資源網,https://freexyz.cn/在linux系統下,如想使用一塊新的硬盤,需要經歷分區、格式化、掛載等操作,然后才能夠使用該硬盤。如想學好如何進行分區,需要掌握好幾個相關的命令才行。下面,我們來一起看看。查看硬盤使…

corssover linux運行無效,使用 CrossOver 在 Linux運行 Windows 軟件(金測OK)

使用 CrossOver 在 Linux運行 Windows 軟件即便是最忠實的 Linux 用戶,有時候也需要運行一下 Windows 軟件。有的用戶為此保留了一臺舊的 WindowsPC,有的使用雙啟動,有的使用虛擬機,而使用 CrossOver Linux 的用戶則通通不需要這…

thrift linux java,Apache Thrift環境配置

安裝Thrift的官方文檔地址:當我看到windows安裝需要Cygwin或MinGW時,我就直接放棄在windows中配置的想法了,直接打開虛擬機用CentOS進行安裝,使用一堆命令安裝畢竟比windows方便。CentOS安裝Thrift官方文檔地址:基本上按照官方的操…