本文目錄一覽:
- 1、php面向對象全攻略 (三)特殊的引用“$this”的使用
- 2、php中面向對象編程是什麼意思,到底用在什麼地方,用一個項目中的實際例子來舉例說明
- 3、php面向對象面試題
- 4、請教PHP面向對象編程
- 5、php面向對象有什麼用
php面向對象全攻略 (三)特殊的引用“$this”的使用
7.特殊的引用“$this”的使用
現在我們知道了如何訪問對象中的成員,是通過“對象-成員”的方式訪問的,這是在對
象的外部去訪問對象中成員的形式,那麼如果我想在對象的內部,讓對象里的方法訪問本對
象的屬性,或是對象中的方法去調用本對象的其它方法這時我們怎麼辦?因為對象裡面的所
有的成員都要用對象來調用,包括對象的內部成員之間的調用,所以在PHP
裡面給我提供了
一個本對象的引用$this,每個對象裡面都有一個對象的引用$this
來代表這個對象,完成對象
內部成員的調用,this
的本意就是“這個”的意思,上面的實例裡面,我們實例化三個實例
對象$P1、$P2、$P3,這三個對象裡面各自存在一個$this
分別代表對象$p1、$p2、$p3。
通過上圖我們可以看到,$this
就是對象內部代表這個對象的引用,在對象內部和調用本
對象的成員和對象外部調用對象的成員所使用的方式是一樣的。
$this-屬性$this-name;
$this-age;
$this-sex;
$this-方法$this-say();
$this-run();
修改一下上面的實例,讓每個人都說出自己的名字,性別和年齡:
代碼片段
複製代碼
代碼如下:
?php
class
Person{
//下面是人的成員屬性
var
$name;
//人的名字
var
$sex;
//人的性別
var
$age;
//人的年齡
//下面是人的成員方法
function
say(){//這個人可以說話的方法
echo
“我的名字叫:”.$this-name.”
性別:”.$this-sex.”
我的年齡是:”.$this-age.”br”;
}
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();
?
輸出結果
我的名字叫:張三性別:男我的年齡是:20
我的名字叫:李四性別:女我的年齡是:30
我的名字叫:王五性別:男我的年齡是:40
分析一下這個方法:
代碼片段
function
say(){
//這個人可以說話的方法
echo
“我的名字叫:”.$this-name.”
性別:”.$this-sex.”
我的年齡是:”.$this-age.”br”;
}
在$p1、$p2
和$p3
這三個對象中都有say()這個方法,$this
分別代表這三個對象,調用相應的屬性,打印出屬性的值,這就是在對象內部訪問對象屬性的方式,如果相在say()這個方
法里調用run()這個方法也是可以的,在say()這個方法中使用$this-run()的方式來完成調用。
php中面向對象編程是什麼意思,到底用在什麼地方,用一個項目中的實際例子來舉例說明
可以這樣理解,
1、類是模具,對象是模具生成的產品,就是印刷術一樣,有了一個字一個字的模子,要印出一個字來就方便了,想印就印,你可以印,我也可以印。
2、在PHP中怎麼做一個模具出來呢,就用 class申明,它就表示你要造一個模具了,但這個模具是做什麼用的,就要在裡面添加函數來表達了,函數名就是這個類的方法名,函數完成的功能就是類的方法。當然函數要實現功能代碼中肯定要用到變量,這個就是所謂的類的成員以或者說成是類的屬性。
3、有了類的屬性有了類的方法,這就完成了一個類的定義,也就是模具做好了,接下來要理解的就是,怎樣去用這個類了。就好像是要看一本書你不可能到印刷廠去把字的模具拿來拼成一頁一頁書來看吧,肯定是在紙上印刷出來。這個印刷的過程就是對象生成的過程也叫類的實例化。PHP中用new關鍵字來生成對象。比如前面定義的類名為 牛,這個牛有一個方法(函數)是:耕地。當然耕地這個函數,要怎樣去實現那是另外要的事情了。現在要說的是怎麼用牛的耕地方法,首先實例化,在PHP中這樣表示:牛1= new 牛。這樣 牛這個類 就有了一個具體可以使喚的牛1了 要想用牛1的耕地方法,意思就是“調用類(對象)的方法”,PHP中這樣表示,牛1-耕地;如果你想要100頭牛,就new100個出來就行,而不用每當要用牛的時候都去寫牛的代碼和牛耕地的代碼了。
4、上面說的是一個理解過程,要實現就要用到具體的PHP的語法了,比如怎樣申明變量 ,怎樣賦值,怎樣用運算符來運算,怎樣寫循環結構,怎樣寫選擇結構,等等 。
php面向對象面試題
其實這個問題很簡單啦,兩分鐘就可以請清楚啦,我在這裡先說一下思想;
首先你得寫一個類表示人,如:person類;
小劉、小張、MrJosnon、MrJohn等都是這個person類的一個實例;
並且人力資源部問問題這是這個person類當中的一個方法,然後每個人都可以繼承自person類,然後又有各自己相關方法等;
然後你得寫一個國家類,如:Country類,然後中國是這個國家的一個具體實例;
然後你得寫一個城市類,如:City類;然後上海是City類的一個實例;
同樣,你得寫一個公司類,如:Company類,然後那兩個公司又是Company類的兩個實例,並且你還得寫一個部門類,如:Depart類,然後人力資源部是部門的一個實例;
上面只是這個問題的中文描述,你可以參考一下;
請教PHP面向對象編程
樓上給的例子,是正確的,只不過聲明訪問權限的時候用的是PHP4的語法。
修正一下:
——————————————————————-
?php
class A
{
public static $name=”張三”;
}
class B
{
public static $name=”李四”;
}
class C
{
public $a;
public $b;
public function __construct()
{
$this-a=new A;
$this-b=new B;
}
public function outputValue()
{
printf(“a::name=%s,b::name=%s\n”,$this-a-name,$this-b-name);
}
}
$c=new C;
$c-outputValue();
php面向對象有什麼用
php程序編寫分總分兩種方式,分別為面向過程和面向對象,用兩者比較你會更容易理解些
以下數據庫操作為例:
面向過程:
$conn = mysql_connect(‘127.0.0.1’, ‘root’, ‘123456’) or die(‘連接不成功!’);
mysql_select_db(‘test’, $conn) or die(‘數據庫不存在!’);
$queryid = mysql_query(“select * from sort”);
while ($rs = mysql_fetch_assoc($queryid)) {
echo $rs[‘name’], ‘br’;
}
過程的代碼給人感覺比較亂,不易管理,以下實現以上代碼一樣的功能,但代碼清楚多了。
面向對象就是把常用的功能封裝為一個類,類由屬性和方法組成:
把以上過程代碼封裝成類,以文件形式保存為db.php
class db {
private $conn; //屬性
private $queryid; //屬性
//構造函數
public function db($host, $dbuser, $dbpasswd, $dbname) {
$this-conn = mysql_connect($host, $dbuser, $dbpasswd) or die(‘連接不成功!’);
mysql_select_db($dbname, $this-conn) or die(‘數據庫不存在!’);
}
//查詢方法
public function query($sql) {
$this-queryid = mysql_query($sql, $this-conn);
}
public function fetch_assoc() {
return mysql_fetch_assoc($this-queryid);
}
}
//在a.php文件中實例化,代碼使用變得簡結和容易理解,代碼的重用性
inclode(‘db.php’);
$db = new db(‘127.0.0.1’, ‘root’, ‘123456’, ‘test’);
$db-query(“select * from sort”);
while ($rs = $db-fetch_assoc()) {
echo $rs[‘name’], ‘br’;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/249774.html