⑴ php的成員方法中可以寫自定義函數么
可以啊,比如:
<?php
class fd
{
public $a;
public $b;
public function dissum()
{
return $this->a+$this->b;
}
}
$obj=new fd();
$obj->a=2;
$obj->b=3;
echo($obj->dissum());
?>
⑵ php的抽象類中的成員方法和成員屬性可以是private的嗎
可以的,場景:子類中的成員方法C調用父類(抽象類)中的成員方法B(非抽象 Public修飾),方法B又調用父類中的private修飾的成員屬性V,此時程序是能正常執行的,且父類為抽象類,其成員屬性也為private。
⑶ 在PHP方法(或成員函數)上除了對象可作為參數限定類型外,還有什麼可作為參數限定類
如果你指的是在定義php函數(方法)時,對參數類型進行類型限定的話(類似C和DELPHI語言的強類型檢測定義的那種),那麼,據查閱資料,答案如下:
php只有數組和對象兩種限定類型。
PHP 5 可以使用類型約束。函數的參數可以指定只能為對象(在函數原型裡面指定類的名字),php 5.1 之後也可以指定只能為數組。
注意,即使使用了類型約束,如果使用NULL作為參數的默認值,那麼在調用函數的時候依然可以使用NULL作為實參。
⑷ PHP中如何定義類及其成員屬性與操作
3、類中操作的定義
i. 我本人一般喜歡叫操作為成員方法,以下我會叫操作為方法其實都是一樣的
ii. 成員方法的定義:成員方法就是對該類定義的一些函數方法,比如拿這個類來例句例子,人能吃飯,能跑步,能敲代碼,這就是成員方法。也就是可以做一些可執行性的動作我們理解為成員方法
iii. 成員方法的訪問和成員屬性一樣可以參照上面成員屬性的訪問介紹。
iv. 成員方法和成員屬性一樣也包括public,protected,private,static,final並且作用域也是一樣的,接下來舉一些例子供大家參考和理解。
v. 靜態的成員方法只能訪問靜態的成員屬性和成員方法,並且類內部訪問靜態方法可以使用self::靜態方法(), 類外部訪問使用類名::靜態方法()
⑸ PHP實現動態執行類的成員方法
call_user_func()
⑹ PHP定義一個類,並且定義一個成員方法,該成員方法具有一個參數,傳遞一個數組,返回當前傳遞數組的倒序排序
<?php
class my{
public function fun($arr){
$j=0;
$myarr="";
for($i=count($arr)-1;$i>=0;$i--){
$myarr[$j++]=$arr[$i];
}
return $myarr;
}
}
$p=new my();
$arr=array("1","2","3");
print_r($p->fun($arr));
?>
上述是一個簡單的例子,復雜的時候,思路是一樣的。
⑺ php中靜態成員如何使用
當前類中使用self::或者static::調用靜態成員,靜態方法中只能調用靜態成員,外部直接使用類名::靜態成員調用
⑻ php 類中 通過成員方法訪問成員變數有什麼好處,我知道是爭對於安全性,但不能解釋怎麼個安全法,
將成員變數私有化,並使用公有介面去訪問,是為了保證數據的正確性,保證對象能夠正常工作。
對象有兩個作用,一是保存數據,二是擁有操作數據的方法。對象就是一個黑盒子,隱藏數據操作細節,而我們可以輕松地處理和取得數據,不需要了解內部的處理過程。對象的數據只由它自己去處理,沒有外部干涉,這樣的數據是安全的可信任的。
如果我們能夠任意改變對象的數據,就是對其密封性的破壞。在"外力"的作用下,對象擁有的數據類型和值發生改變,很可能會影響其內部的處理過程,嚴重時會發生錯誤。
示例一:
classDivision{
public$a;
public$b;
publicfunction__construct($a,$b){
if($b==0)
thrownewException('divisionbyzero!');
$this->a=$a;
$this->b=$b;
}
publicfunctionrun(){return$this->a/$this->b;}
}
$a=newDivision(5,5);
$a->b=0;
$a->run();//出錯了,因為除數被設為了0
在上例中,雖然構造函數對傳入的變數經行了過濾,但由於變數是公有的,用戶「不小心」更改了$b的值,造成了程序異常。
使用函數來訪問變數,可以對變數經行預處理,防止用戶傳入了不合法的值。這就像是在對象的前面加上了一道「防火牆」,保證程序正常地工作。
示例二:
classA{
publicfunctioncall(){echo'A->call()iscalling!';}
}
classB{
private$_a;
publicfunctionsetA(A$a){
if(!is_callable($a,'call'))
thrownewException('A->call()isnotcallable!');
$this->_a=$a;
}
publicfunctioncall(){
if($this->_a)
$this->_a->call();
}
}
在上例中,屬性$a是私有的,只能通過setA()方法來設置。setA()方法中使用了PHP的「類型提示」功能,這就要求傳入的參數必須是A的實例。在函數中的代碼又檢查了$a對象是否含有可以調用的$a->call()方法,如果失敗就會拋出異常。從而保證了傳入變數的正確性。
希望能幫到您~也希望能夠及時採納~
⑼ PHP中,怎麼在成員函數當中調用自己的成員屬性除了靜態調用之外還有別的方法嗎
和靜態數據成員一樣,靜態成員函數是類的一部分,而不是對象的一部分。如果要在類外調用公用的靜態成員函數,要用類名和域運算符「∷」。
如 Box∷volume( ); 實際上也允許通過對象名調用靜態成員函數,如 a.volume( ); 但這並不意味著此函數是屬於對象a的,而只是用a的類型而已。 靜態成員函數的作用是為了能處理靜態數據成員。 可以說,靜態成員函數與非靜態成員函數的根本區別是:非靜態成員函數有this指針,靜態成員函數並不屬於某一對象,它與任何對象都無關,靜態成員函數沒有this指針。
由此決定了靜態成員函數不能訪問本類中的非靜態成員。 在C++程序中,靜態成員函數主要用來訪問靜態數據成員,而不訪問非靜態成員。假如在一個靜態成員函數中有以下語句: cout<<height<<endl; //若height已聲明為static,則引用本類中的靜態成員,合法 cout<<width<<endl; //若width是非靜態數據成員,不合法。但是,並不是絕對不能引用本類中的非靜態成員,只是不能進行默認訪問,因為無法知道應該去找哪個對象。如果一定要引用本類的非靜態成員,應該加對象名和成員運算符「.」。如 cout<<a.width<<endl; //引用本類對象a中的非靜態成員
⑽ 在php中,如何引用成員函數autocommit()
用intptr類型,hdc一般是指繪圖設備句柄,用graphics的成員方法gethdc獲得,graphics可以用靜態方法fromhwnd創建某個窗體的繪圖器,把某個窗體的handle傳給他就可以了,如果handle傳0,則創建的是整個屏幕的繪圖器。