當前位置:首頁 » 編程語言 » php訪問屬性

php訪問屬性

發布時間: 2022-06-13 19:35:42

1. php擴展 怎麼訪問常量屬性

訪問器屬性不包含數據值;它們包含一對getter和setter函數(不過,這兩個函數都不是必須的)。在讀取訪問器屬性時,會調用getter函數,這個函數負責返回有效的值;在寫入訪問器屬性時,會調用setter函數並傳入新值,這個函數負責決定如何處理數據。訪問器屬性有如下4個特性。
[[Configurable]]:表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為數據屬性。對於直接在對象上定義的屬性,這個特性的默認值為true。
[[Enumerable]]:表示能否通過for-in循環返回屬性。對於直接在對象上定義的屬性,這個特性的默認值為true。
[[Get]]:在讀取屬性時調用的函數。默認值為undefined。
[[Set]]:在寫入屬性時調用的函數。默認值為undefined。
訪問器屬性不能直接定義,必須使用Object.defineProperty()來定義。例如:
var
book
=
{
_year:2004,
edition:1
};
Object.defineProperty(book,"year",{
get:function(){
return
this._year;
},
set:function(newValue){
if(newValue>2004)
{
this._year
=
newValue;
this.edition
+=
newValue-2004;
}
}
});
book.year
=
2005;
alert(book.edition);//2
以上代碼創建了一個book對象,並給它定義兩個默認的屬性:_year和edition。_year前面的下劃線是一種常用的記號,用於表示只能通過對象方法訪問的屬性。而訪問器屬性year則包含一個getter函數和一個setter函數。getter函數返回_year的值,setter函數通過計算來確定正確的版本。因此,把year屬性修改為2005會導致_year變成2005,而edition變為2。這是使用訪問器屬性的常見方式,即設置一個屬性的值會導致其他屬性發生變化。
不一定非要同時制定getter和setter。只指定getter意味著屬性不能寫,嘗試寫入屬性會被忽略。在嚴格模式下,嘗試寫入只指定了getter函數的屬性會拋出錯誤。類似的,只指定setter函數的屬性也不能讀,否則在非嚴格模式下會返回undefined,而在嚴格模式下會拋出錯誤。
支持ECMAScript
5的這個方法的瀏覽器有IE9+(IE8隻是部分實現)、FF4+、Safari5+、Opera12+和Chrome。在這個方法之前,要創建訪問器屬性,一般都使用兩個標準的方法:_defineGetter_()和_defineSetter_()。這兩個方法最初是由Firefox引入的,後來Safari3、Chrome1和Opera9.5也給出了相同的實現。使用這兩個遺留的方法,可以像下面這樣重寫前面的例子。
var
book
={
_year=2004,
edition:1
};
//定義訪問器的舊方法
book._defineGetter_("year",function(){
return
this._year;
});
book._defineSetter_("year",function(){
if(newValue>2004){
this._year
=
newValue;
this.edition
+=
newValue
-
2004;
}
});
book.year=2005;
alert(book.edition);//2
在不支持Object.defineProperty()方法的瀏覽器中不能修改[[Configurable]]和[[Enumerable]]。

2. php你如何訪問和設置一個類的屬性

class Demo
{
private $_var1 = 0;

public function getVar1()
{
return $this->_var1;
}
public function setVar1($value)
{
$this->_var1 = $value;
}
}

$demo = new Demo();
$demo->setVar1(10);
echo $demo->getVar1();

3. 關於 php 類成員屬性聲明和訪問的問題

你總共提了三個問題,三個問題都是關於訪問許可權控制的,建議你將面向對象的訪問許可權控制的那部分給學習一下。
(1)類里的變數是否一定要聲明為成員屬性,
答:不一定,在一個類中,有構造函數、屬性、方法;未在方法和構造函數中聲明的變數為屬性,屬性是體現這一個類(對象)的特性的描述,他是這個類的特性的描述,這個類的狀態的改變將會隨著這些屬性值的改變而改變。如果某一變數不屬於這個類的屬性,當然可以聲明在別的地方,只要在訪問許可權內,當然也可以訪問,就像foreach($this->post as $key=>$value),$key與$value都不是類的屬性,當然不用聲明在類的屬性部分了,這里的$key與$value便成了這個方法的局部變數。
(2)非類的屬性,絕對不能用$this->來訪問,$this指的是當前對象,$this->所指向的是當前對象的屬性或許方法,既然不是類的屬性,當然不能用$this->來訪問了,

4. 在php中如何設置類的屬性,如何調用類的方法

PHP訪問類的屬性、方法使用箭頭語法(->)。這里我給你一個例子供你參考:

<?php
classMyClass{//定義MyClass類
public$name;//定義了一個公有屬性
protected$_age;//定義了一個保護屬性
private$_email;//定義了一個私有屬性

publicfunctionmy_method(){//定義my_method方法
}

protectedfunction_my_method2(){//定義_my_method2方法
}
}
$obj=newMyClass;//實例化
$obj->name='noname';//設置name屬性
$obj->_age=12;//這是錯誤的,不能設置保護屬性
$obj->address='KingStreet.'//設置一個未聲明的屬性是允許的,效果和公有屬性類似,但未賦值前不能使用。
$obj->my_method()//調用公有方法
$obj->_my_method2();//這是錯誤的,不能調用保護方法

你需要理解繼承、公有、保護和私有的概念。

繼承:子類繼承父類的公有、保護屬性和方法。

公有:類的實例可以訪問的屬性和方法。

保護:只能在類的內部及其子類內部訪問的屬性和方法。

私有:只能在類的內部訪問的屬性和方法。


這是個很基礎的問題,建議你多看書。

5. php 實例化對象為什麼可以訪問靜態屬性

實例化的對象不能訪問靜態屬性,但是沒有說不能用實例化的對象方法訪問靜態屬性。
意思是不能通過($對象名->靜態變數)這種方式訪問
可以通過$foo::$my_static; 來訪問

6. php子類可以繼承和訪問父類的私有屬性和方法嗎

你這樣理解也可以,當父類有私有的方法和屬性,子類是繼承不到的,所以子類不能訪問父類的私有方法和屬性。java
特性,private:類中只要限定為private的成員,只能被這個類本身訪問

7. php訪問對象屬性為數組時的情況

一樣得,例如:

<?php

classstudent{

private$id;//定義屬性,學號

private$name;//定義屬性,姓名

private$teacher;//定義屬性,所屬老師,array

//讀取值

publicfunctiongetteacher(){

$this->teacher=array('甲','乙');

return$this->teacher;

}

}

$d=newstudent();

$stu_teacher=$d->getteacher();

echo"<pre>";

print_r($stu_teacher);

echo"</pre>";

?>

8. PHP中,為什麼子類可以訪問父類的私有屬性,而且可以直接調用

你寫的不對哦。
按你寫的,
name
是子類是屬性,而不是父類的。
這樣:
<?php
class
Person
{
private
$name="zhangsan";
}
class
Man
extends
Person
{
}
$m
=
new
Man();
//$m->name="zhangsan";
echo
$m->name;
?>

9. php如何通過子類繼承父類共有方法訪問父類私有屬性

在父類中加個public方法,
如private
$aaa
=
'test';
public
function
getAAA(){
return
$this->aaa;
}
在子類中調用parent::getAAA();就可以獲得父類私有屬性
當然如果你想獲取多個,可以改成動態變數名,
getAAA($v){
return
$this->{$v};
}

10. php 對象直接訪問私有屬性~呢

觀察了你的很多問題,為什麼都要以'呢'結尾呢?
私有屬性只有在雷內才可以訪問,對象如果要訪問的話,需要一個public入口才能訪問.也就是
public function getPrivate(){
return $this->private;

}

熱點內容
流控腳本破解 發布:2025-02-07 08:39:09 瀏覽:413
什麼是資源為什麼要研究資源配置 發布:2025-02-07 08:25:19 瀏覽:87
釣魚網站源碼製作 發布:2025-02-07 08:23:54 瀏覽:139
mac運行fl需要什麼配置 發布:2025-02-07 08:15:45 瀏覽:573
安卓怎麼做都比不了蘋果 發布:2025-02-07 08:12:47 瀏覽:238
怎麼給物理機配置ip地址 發布:2025-02-07 08:01:37 瀏覽:139
三國志13未加密 發布:2025-02-07 07:54:37 瀏覽:926
馬斯克中國訪問 發布:2025-02-07 07:54:29 瀏覽:102
資料庫有表 發布:2025-02-07 07:50:49 瀏覽:29
基於nginx搭建圖片伺服器原理 發布:2025-02-07 07:44:18 瀏覽:449