當前位置:首頁 » 編程語言 » php調用父類變數

php調用父類變數

發布時間: 2023-04-27 05:40:28

『壹』 php子類怎麼調用父類方法

<?php
classA{
staticpublic$m=1;
staticpublicfunctionm(){
echostatic::$m,'';
}
staticpublicfunctionn(){
static::n();
}
publicfunctionl(){
echo'父類方法';
}
}
classBextendsA{
staticpublic$m=111;
staticpublicfunctionm(){
parent::m();
}
staticpublicfunctionn(){
echoparent::$m,'';
}
}
B::m();
B::n();
$b=newB();
$b->l();

『貳』 PHP子類怎麼調用父類的屬性

父類的Pname

private
類型,也就是私有的只能父類自己的
函數調用
,子類以及外部是無法調用的。
如果這個變數只允許本類方法調用
應該用
private
方式調用,如果允許本類以及子類調用應該用
protected
保護)修飾,如果希望外部調用則應該用
public
公開修飾。這三個關鍵詞對函數同樣有效。
我把php.net關於這個的說明放在下面參考資料裡面了,你可以仔細看下。

『叄』 php取父類裡面的變數只能用$this嗎

這個要分的, 變數有兩種,還有一種是靜態變數。

如果像你說的訪問對象中的變數,就必須使用$this, 如果訪問靜態變數可以使用 [ :: ] (兩個冒號)

你看:

classP{
protected$name='Zhang';
}

classCextendsP{
functionget(){
return$this->name;//獲取本對象中的變數,如果沒有則從父類中獲取
}
}

如果獲取昌做靜態變數就不能使用 this 了,因為靜態方法中沒有實例,可以通過你說的方式來獲取

classP{
高核static$name='Zhang';
}

classCextendsP{
staticfunctionget(){
returnself::$name;//獲取本類中的name,如果沒有從父類中獲取
}

staticfunctionget2(){
returnparent::$name;//直接獲取父類中的name戚迅掘等價於:P::$name;
}
}

『肆』 php中子類有構造函數如何調用父類中的構造函數,最好能舉個簡單的例子

class A{
function __contruct($num){
echo "aaa";
}
}
class B extends A{
function __contruct(){
echo "bbb";
A:: __contruct($num) //第一種調用父類構造函數的方法
parent:: __contruct($num) //第二種調用父類構造函數的方法
}
}

『伍』 PHP子類怎麼調用父類的屬性

<?php
class Perpon {
private $Pid;
private $Pname;
private $Page;
private $Psex;
private $Pbirthday;

public function __construct($Pid,$Pname,$Page,$Psex,$Pbirthday)//PHP5中間的構造函數
{ $this->Pid=$Pid;
$this->Pname=$Pname;
$this->Page=$Page;
$this->Pbirthday=$Pbirthday;
echo "創建了一個對象"."<br>";
}
public function __set($name,$value) {
$this->$name=$value;
}
function show(){
echo ("我的姓名:$this->Pname,我的年齡:$this->Page,我的性別是:$this->Psex,我的生日是$this->Pbirthday <br>"); }

public function __get($name) { return $name; }
public function dining() { echo "$this->Pname 正在吃飯 <br>"; }
public function shuohua() { echo "$this->Pname喜歡說話 <br>"; }
public function gaosu() { echo "我的姓名叫做$this->Pname <br>"; }
public function IT() { echo $this->Pname."的工作是IT行業 <br>"; }
}

class Student extends Perpon {
public function __construct()//PHP5中間的構造函數
{ echo "子類的構造函數"; }

public function IT()//PHP5中間的構造函數
{ parent::IT();
echo $this->Pname."的工作是學生<br>";
}
}
$perpon=new Perpon('1','zhangsan','18','男','9月23'); $perpon->show(); $perpon->dining(); $perpon->shuohua(); $perpon->gaosu(); $perpon->IT();
echo "<hr>";
$student=new Student(); $student->IT();?>

調不到的原因是:
private $Pname;
記住:private只能自己調用,其他是不行的,這一點你自己記住即可。

『陸』 php 子類創建了個屬性如何調用父類屬性的值

classbextendsa{
扮敏轎public$b;
function__construct(){
$this->b=$this->attribute;
廳肆}
}

在屬性定義階拿廳段不能使用你說的那種語句,如果你想使用那種賦值語句的話可以放到構造函數裡面

『柒』 PHP繼承的問題,調用父類的方法this指向問題。

我來說一說:


【一】…………public(僅有)屬性和方法的繼承…………

classa{
public$var='vara<br/>';
publicfunctionm(){
echo'funa<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
}
}

classbextendsa{
public$var='varb<br/>';
publicfunctionm(){
echo'funb<br/>';
}
}
$li=newb();
$li->run();
echo'<hr>';
var_mp($li);

輸出:

varb
funb
————————————————————————————
object(b)[1]
public'var'=>string'varb<br/>'(length=11)

在這段代碼中所表示的,是我們常見的一種繼承方式,同為公有屬性的$var 和公有方法m()


在這里,$var和m()都被繼承並覆寫,實例化過後,內存中只有一個$var實例,通過var_mp($li);我們可以看到它。



【二】…………private(私有)屬性和方法的繼承…………

classa{
private$var='vara<br/>';
privatefunctionm(){
echo'funa<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
var_mp($this);
echo'<br/><br/>';
}
}

classbextendsa{
private$var='varb<br/>';
privatefunctionm(){
echo'funb<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
var_mp($this);
echo'<br/><br/>';
parent::run();
}
}
$li=newb();
$li->run();
echo'<hr>';
var_mp($li);

輸出:

varb
funb
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)
.
.
vara
funa
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)
.
————————————————————————————————
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)

這個時候,我們可以看到,在調用run方法時,首先它會調用到b類的私有屬性$var 和私有方法m(),隨後,又使用parent::run()調用父類的run()方法,我們可以看到,父類的run()方法調用後,它所調用的屬性和方法,都是a類的兩個私有屬性和方法,這種形式,和你的問題一致;


而它與$this指向無關,我們可以在這里看到,兩個$this都是指向b類。


而最有意思的是,在$li句柄中,我們卻看到了兩個屬性!一個是b類的屬性,一個是a類的屬性,這兩個屬性同時存在著,那麼,私有方法也自然是同時存在著。


【三】…………私有屬性和方法能不能被繼承…………

classa{
private$var='vara<br/>';
privatefunctionm(){
echo'funa<br/>';
}
}
classbextendsa{
publicfunctionrun(){
echo$this->var;
$this->m();
}
}
$li=newb();
$li->run();

輸出:

Notice:Undefinedproperty:b::$varinE:...onLine9
Fatalerror:Calltoprivatemethoda::m()fromcontext'b'inE:...onLine10

這可以證明,私有屬性和方法,無法被繼承,所以,你的代碼示例中所說,將a類的m()方法更改為private後,會顯示aa的屬性,也就可以理解明白了。

『捌』 php子類調用父類的常量

<?php
classBase{
constMSG='hello,world!';
}

classSonextendsBase{
staticfunctionshowMsg(){
echoparent::MSG;
}
}

Son::showMsg();//output:hello,world!

『玖』 php怎麼獲取父類函數裡面的變數值

<?php
classA{public$a1='a1';protected$a2='a2';functiontest(){echo"hello!<hr/>";}}
classBextendsA{//若A類和B類不在同一文件中請包含後(include)再操作
public$a1='b1';functiontest2(){$this->test();parent::test();//子類調用父類方法}
functiontest()
{echo$this->a1.',';echo$this->a2.',';echo"b2_test_hello<hr/>";}}
$a=newB();$a->test();//b1,a2,b2_test_hello
$a->test2();//b1,a2,b2_test_hello//hello!
?>

方法的調用:$this->方法名();如果子類中有該方法則調用的是子類中的方法,若沒有則虛絕是調用父類滾豎中的
parent::則始終調用的是父類中的方法。
變數的調用:$this->變數名;如果子類中有該變大譽大量則調用的是子類中的,若沒有則調用的是父類中的

『拾』 PHP 靜態方法怎麼調用父類非靜態方法

子類的靜態方法裡面實例化父類,然後調用父類的非靜態方法。
因為子類的靜態方法調用父類的方法需要使用parent::函數名()或有可能是self::函數名(),子類的靜態方法使用parent::函數名()或有可能是self::函數名()時這個函數名()必須是父類裡面的一個靜態方法,如果不是靜態方法,會報錯Strict Standards: Non-static method parentClass::b() should not be called statically,但是還是會有正確結果喲

熱點內容
萬科海上傳奇二期 發布:2024-11-01 14:22:52 瀏覽:59
u盤文件夾是空的 發布:2024-11-01 14:19:57 瀏覽:402
python包含字元串 發布:2024-11-01 14:19:17 瀏覽:479
c語言的精華 發布:2024-11-01 14:19:02 瀏覽:588
steam截圖文件夾 發布:2024-11-01 14:18:59 瀏覽:613
ipad怎麼往安卓傳照片 發布:2024-11-01 14:18:19 瀏覽:508
我的電腦沒有文件夾選項 發布:2024-11-01 14:13:55 瀏覽:546
vb創建資料庫表 發布:2024-11-01 14:11:55 瀏覽:872
sql聯合表 發布:2024-11-01 14:03:25 瀏覽:962
linux編程gcc 發布:2024-11-01 14:02:41 瀏覽:705