當前位置:首頁 » 編程語言 » php類成員變數

php類成員變數

發布時間: 2022-06-24 04:32:11

① 關於php 構架和繼承類的問題和成員變數是什麼意思

public function __construct($name,$age,$avirpois,$sex,$height){//定義個構造 構架是起到什麼作用的
構造函數就是當你new一個對象的時候自動執行的
$this->name=$name; //繼承了父類為什麼這里還要調用成員變數
你new zilei("李亞","165"); 執行子類的構造函數,構造函數中給父類的成員變數賦值,並不執行父類的構造方法,要執行的話就要在子類中加parent::__construct

② 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類中通過var定義的成員變數,是什麼訪問許可權的

var 一般是出現在類中。一般的過程和函數不要 var定義變數.
且它的級別為public。亦不能用任何其它的修飾符。需要注意的是:在成員方法中亦不能這樣聲明。

④ PHP類的靜態(static)方法和靜態(static)變數使用介紹

在php中,訪問類的方法/變數有兩種方法:
1.
創建對象$object
=
new
Class(),然後使用」->」調用:$object->attribute/function,前提是該變數/方法可訪問。
2.
直接調用類方法/變數:class::attribute/function,無論是靜態/非靜態都可以。但是有前提條件:
A.
如果是變數,需要該變數可訪問。
B.
如果是方法,除了該方法可訪問外,還需要滿足:
b1)
如果是靜態方法,沒有特殊條件;
b2)
如果是非靜態方法,需要改方法中沒有使用$this,即沒有調用非靜態的變數/方法,當然,調用靜態的變數/方法沒有問題。
然後我們再看一下使用$object->…
和使用class::…
都有什麼區別:
1.
使用$object->…
,需要執行構造函數創建對象;
2.
使用class::…
調用靜態方法/變數,不需要執行構造函數創建對象;
3.
使用class::…
調用非靜態方法/變數,也不需要執行構造函數創建對象。
然後奇怪的地方就出來了,既然2和3都一樣,那靜態方法/變數存在還有什麼意義呢?
差異還是顯然存在的,如下:
1.
靜態變數
靜態成員只保留一個變數值,而這個變數值對所有的實例都是有效,也就是說,所有的實例共享這個成員。
2.
靜態方法
靜態方法可以直接使用class::…
來調用,而非靜態方法需要滿足一定限制條件才能使用class::..
的方法調用,如之前所述

⑤ php 成員變數不能是多維數組

不關多維數組的事,而是在類定義裡面不允許直接給變數賦值!!
比如你把$arr =array('a1'=>$arr2=array('a4'=>$arr3=array('a'=>'11'),'a5'=>'55'),'a2'=>'22','a3'=>'33');
改為
$arr=1 一樣會報錯.
清楚沒有?

你可以在class外部定義變數,然後在class里調用.

⑥ 繼承中設置成員變數 php

照你的描述應該是不可以的。php是一種只支持單重繼承的語言,子類在繼承父類的時候一定要繼承父類的所有的構造方法。要多重繼承的時候要用到介面(php不支持多重繼承)

⑦ PHP類的成員屬性

一個好的編程習慣是所有變數都定義,「可以不定義」並不是你不定義的理由。如果有可能,最好能把沒有定義的變數都當作編譯錯誤報告,這樣可以避免寫錯變數名。如果PHP不檢查這個,說明語法檢查不嚴謹

⑧ PHP中全局變數 局部變數 成員變數有什麼區別

局部變數只能函數內部使用作為
return函數返回值,
調用函數的形參
局部變數,全局變數要頁面能使用,但是類中函數中不能使用,需要傳入賦值使用,php種沒有成員變數的說法!

⑨ php構造方法對成員變數賦值 function__construct

function __construct

function 是系統關鍵詞,表示定義一個方法,後面加空格然後根方法名( __construct
是方法名)。你的未加空格

__construct 是系統內置的,叫魔術方法,每次實例化類是會自動執行此方法。
還有就是調用類的成員變數不需要在變數前面加 $ 比如:
$this->school_name = $name; 正確
$this->$school_name = $name; 錯誤

<?php
class School {
public $school_name;
public $school_student;
public $school_room;
public $school_teacher;
function __construct($name, $student, $room, $teacher) {
$this->school_name = $name;
$this->school_student = $student;
$this->school_room = $room;
$this->school_teacher = $teacher;
}
function show() {
echo "!@#$%^&*";
}
}

class People extends School {
public $teachername;
function __construct($tname, $studentconsts) {
$this->teachername = $tname;
$this->school_student = $studentconsts;
}

function show() {
return "今天上課" . $this->teachername . "講課,學生" . $this->school_student . "人";
}
}

class Tongji extends School {
function show() {
return "學校名:" . $this->school_name . "學生數:" . $this->school_student . "教室數:" . $this->school_room . "教師數:" . $this->school_teacher;
}
}

$a = new People ( "周周周", 20 );
$b = new School ( "DZ", 20, 50, 2 );
echo $a->show () . "<br>";
echo $b->show ();

?>

⑩ php共享成員變數

self::function1()訪問方法
$this->屬性 訪問屬性
在類的內部訪問方法用::
訪問屬性是->
還有你應該在class a的下面這樣寫
public $a;把變數設置為類的屬性,才能用$this->a在類的內部獲取到

熱點內容
資料庫的欄位命名規則 發布:2025-02-05 13:53:16 瀏覽:683
固定ip自建伺服器訪問 發布:2025-02-05 13:53:03 瀏覽:740
快速獲取文件夾沒文件 發布:2025-02-05 13:52:19 瀏覽:871
伺服器主機如何家用 發布:2025-02-05 13:52:15 瀏覽:99
安卓應用如何刪除自動下載 發布:2025-02-05 13:52:15 瀏覽:660
c語言switch語句用法 發布:2025-02-05 13:49:16 瀏覽:936
騰訊緩存不了的動畫片怎麼辦 發布:2025-02-05 13:49:12 瀏覽:130
access資料庫調用 發布:2025-02-05 13:45:01 瀏覽:49
如何查詢伺服器所有電腦名 發布:2025-02-05 13:21:38 瀏覽:150
我的世界ec伺服器up主稱號怎麼獲得 發布:2025-02-05 13:21:15 瀏覽:913