導航:首頁 > 編程語言 > staticprivatephp

staticprivatephp

發布時間:2024-05-31 03:54:15

php中static 靜態變數和普通變數的區別

php中static 靜態變數和普通變數的區別:

在變數的前面加上static 就構成了靜態變數(static 變數)。

static變數和普通變數的區別在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。 而靜態全局變數則限制了其作用域, 即只在定義該變數的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。

㈡ php 單例模式

單例模式是一種常用的軟體設計模式,可以保證系統中一個類只有一個實例,從而達到節約系統資源提升特殊類使用效率的目的


php實現單例模式的方法

classA{
//靜態屬性
privatestatic$_instance;

//空的克隆方法,防止被克隆
privatefunction__clone(){}

//獲取實例
(){
if(!(self::$_instanceinstanceofself)){
self::$_instance=newA();
}
returnself::$_instance;
}
}

//調用
$obj=A::getInstance();

㈢ php class中public,private,protected,static

1. public:許可權是最大的,可以內部調用,實例調用

2. protected: 受保護類型,用於本類和繼承類調用

常用場景在許可權設置

有需要用到許可權的Class,只要繼承Base這個Class即可用到登錄驗證。執行Login的時候會先運行Base裡面的方法

3. private: 私有類型,只有在本類中使用。

4. static: 一般是在傳值的時候使用,表示值不會被修改,默認為public,可用::訪問

㈣ php 中使用private static 方法名 是什麼意思

private 關鍵字聲名 一個私有的方法或屬性;定義了private的方法或屬性在類的外部不能訪問,只能在本類中使用。
類中使用私有方法:
$this->屬性 或 方法()
static 關鍵字 是創建一個靜態方法或靜態屬性;定義了static 的方法或屬性不需要實例化就可以使用。
訪問靜態變數 類名::$變數名;
訪問靜態方法 類名::方法名();
訪問本類靜態變數 self::$變數名;
訪問本類靜態方法 self::方法名();
訪問父類靜態變數 parent::$變數名;
訪問父類靜態方法 parent::方法名();

㈤ 說說php面向對象編程時static,public,private,protected 各有什麼意義

staticpublic與publicstatic是等價的,這兩者只是兩個修飾符的順序不同。根據oracle.com教材中第八章的描述,如果兩個或兩個以上的(不同的)欄位修飾符出現在欄位聲明,它們出現的順序需與FieldModifier一致,這只是習慣,但不是必需的。部分修飾符說明:public是訪問許可權修飾符,用於控制外界對類內部成員的訪問,聲明為public的對象成員是完全共有的,外界可以隨意訪問,除此之外還有private,protected和默認。static控制類成員變化的修飾符。static是靜態成員修飾符,其修飾的靜態變數脫離具體對象獨立存在,在內存中之後一份拷貝,所有的對象都公用這一個存儲空間,所以對static修飾的靜態變數進行的修改對該類的所有對象都起作用。static修飾的靜態函數代表所有對象的統一操作,只能調用靜態變數。static是針對面向對象中的「多態」而提出來的,static修飾的靜態成員不存在多態性。附:FieldModifier順序

㈥ php跪求封裝好的pdo預處理類,在線等

<?php
//資料庫連接類,不建議直接使用DB,而是對DB封裝一層
//這個類不會被污染,不會被直接調用
classDB{
//pdo對象
private$_pdo=null;
//用於存放實例化的對象
staticprivate$_instance=null;

//公共靜態方法獲取實例化的對象
(){
if(!(self::$_instanceinstanceofself)){
self::$_instance=newself();
}
returnself::$_instance;
}

//私有克隆
privatefunction__clone(){}

//私有構造
privatefunction__construct(){
try{
$this->_pdo=newPDO(DB_DNS,DB_USER,DB_PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SETNAMES'.DB_CHARSET));
$this->_pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException$e){
exit($e->getMessage());
}
}

//新增
protectedfunctionadd($_tables,Array$_addData){
$_addFields=array();
$_addValues=array();
foreach($_addDataas$_key=>$_value){
$_addFields[]=$_key;
$_addValues[]=$_value;
}
$_addFields=implode(',',$_addFields);
$_addValues=implode("','",$_addValues);
$_sql="INSERTINTO$_tables[0]($_addFields)VALUES('$_addValues')";
return$this->execute($_sql)->rowCount();
}

//修改
protectedfunctionupdate($_tables,Array$_param,Array$_updateData){
$_where=$_setData='';
foreach($_paramas$_key=>$_value){
$_where.=$_value.'AND';
}
$_where='WHERE'.substr($_where,0,-4);
foreach($_updateDataas$_key=>$_value){
if(Validate::isArray($_value)){
$_setData.="$_key=$_value[0],";
}else{
$_setData.="$_key='$_value',";
}
}
$_setData=substr($_setData,0,-1);
$_sql="UPDATE$_tables[0]SET$_setData$_where";
return$this->execute($_sql)->rowCount();
}

//驗證一條數據
protectedfunctionisOne($_tables,Array$_param){
$_where='';
foreach($_paramas$_key=>$_value){
$_where.=$_value.'AND';
}
$_where='WHERE'.substr($_where,0,-4);
$_sql="SELECTidFROM$_tables[0]$_whereLIMIT1";
return$this->execute($_sql)->rowCount();
}

//刪除
protectedfunctiondelete($_tables,Array$_param){
$_where='';
foreach($_paramas$_key=>$_value){
$_where.=$_value.'AND';
}
$_where='WHERE'.substr($_where,0,-4);
$_sql="DELETEFROM$_tables[0]$_whereLIMIT1";
return$this->execute($_sql)->rowCount();
}

//查詢
protectedfunctionselect($_tables,Array$_fileld,Array$_param=array()){
$_limit=$_order=$_where=$_like='';
if(Validate::isArray($_param)&&!Validate::isNullArray($_param)){
$_limit=isset($_param['limit'])?'LIMIT'.$_param['limit']:'';
$_order=isset($_param['order'])?'ORDERBY'.$_param['order']:'';
if(isset($_param['where'])){
foreach($_param['where']as$_key=>$_value){
$_where.=$_value.'AND';
}
$_where='WHERE'.substr($_where,0,-4);
}
if(isset($_param['like'])){
foreach($_param['like']as$_key=>$_value){
$_like="WHERE$_keyLIKE'%$_value%'";
}
}
}
$_selectFields=implode(',',$_fileld);
$_table=isset($_tables[1])?$_tables[0].','.$_tables[1]:$_tables[0];
$_sql="SELECT$_selectFieldsFROM$_table$_where$_like$_order$_limit";
$_stmt=$this->execute($_sql);
$_result=array();
while(!!$_objs=$_stmt->fetchObject()){
$_result[]=$_objs;
}
returnTool::setHtmlString($_result);
}

//總記錄
protectedfunctiontotal($_tables,Array$_param=array()){
$_where='';
if(isset($_param['where'])){
foreach($_param['where']as$_key=>$_value){
$_where.=$_value.'AND';
}
$_where='WHERE'.substr($_where,0,-4);
}
$_sql="SELECTCOUNT(*)ascountFROM$_tables[0]$_where";
$_stmt=$this->execute($_sql);
return$_stmt->fetchObject()->count;
}

//得到下一個ID
protectedfunctionnextId($_tables){
$_sql="SHOWTABLESTATUSLIKE'$_tables[0]'";
$_stmt=$this->execute($_sql);
return$_stmt->fetchObject()->Auto_increment;
}


//執行SQL
privatefunctionexecute($_sql){
try{
$_stmt=$this->_pdo->prepare($_sql);
$_stmt->execute();
}catch(PDOException$e){
exit('SQL語句:'.$_sql.'<br/>錯誤信息:'.$e->getMessage());
}
return$_stmt;
}
}
?>

㈦ php static 方法有什麼好處

  1. 靜態方法不需要所在類被實例化就可以直接使用。

  2. 靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。

  3. 靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。

㈧ php中聲明變數var與private、public、static的區別

var
是聲明一個變數/對象,public,
private,
是類/類的屬性/類的欄位的訪問修飾符,static是類/類的屬性/類的欄位的修飾符

㈨ php怎麼理解這些個關鍵字啊,public;private;protect;final;static;const;我感覺這

public: 公有屬性或方法
在子類中可以通過self::var 或self::method 來調用,可以通過parent::method來調用父類中的方法,但不能調用公有屬性.
在實例中可以通過$obj->var或self::method 來調用
protected: 受保護類型
在子類中可以通過self::var 或self::method調用,可以通過parent::method來調用父類中的方法
在實例中不能通過$obj->var 來調用 protected類型的方法或屬性
private: 私有類型
該類型的屬性或方法只能在該類中使用,在該類的實例、子類中、子類的實例中都不能調用私有類型的屬性和方法
再來說說final
1.final不能用來修飾成員屬性
2.final只能修飾類和方法
作用:被修飾的類不能被子類所繼承;被修飾的方法不能被子類的方法覆蓋。
然後來說說static
1.static用來修飾成員屬性和成員方法,但不能用來修飾類
2.用static修飾的成員屬性可以被同一個類的所有對象共享
3.靜態的數據是存在 內存中的 數據段中(初始化靜態段)
4.靜態的數據是在類在第一次載入時,分配到內存中的
5.什麼是類被載入?只要在程序中使用到這個類(有這個類名出現)
6.靜態的成員屬性都要用類名去訪問,不用創建對象,不用對象去訪問;在類里邊可以用self代表本類($this)
7.靜態方法,不能訪問非靜態的成員屬性(但是,在非靜態方法卻能訪問靜態的成員屬性),非靜態的成員屬性,必須用對象訪問,在內部訪問非靜態成員屬性,用$this.
8.如果你確定一個方法中不需使用到非靜態的成員屬性,則可以將這個方法聲明為靜態方法,不需實例化對象,就可以訪問
最後來說說const
1.它只能用來修飾成員屬性
2.在類中聲明常量必須使用const
3.訪問方式和訪問靜態成員屬性一樣(類外使用 類名::成員屬性,類里邊則使用self::成員屬性)
4.常量一定要在聲明的時候就給初始值

閱讀全文

與staticprivatephp相關的資料

熱點內容
伺服器安全保護是什麼意思 瀏覽:787
刪除運行命令 瀏覽:720
龍之召喚伺服器如何 瀏覽:119
linux目錄跳轉 瀏覽:368
程序員和老闆稱兄道弟 瀏覽:759
直播網路連接源碼 瀏覽:736
用安卓手機怎麼登錄蘋果手機id 瀏覽:710
論文查重工具源碼 瀏覽:401
android銀聯demo 瀏覽:86
智能演算法發展 瀏覽:351
房車露營地用什麼app 瀏覽:70
spark編程指南python 瀏覽:553
phparray源碼 瀏覽:1002
安卓手機反應有點慢怎麼辦 瀏覽:705
c語言怎麼訪問伺服器並獲取數據 瀏覽:114
怎麼下載三維app 瀏覽:77
把pdf中的圖片導出到excel 瀏覽:505
php操作redis實例 瀏覽:143
蘋果app怎麼綁卡 瀏覽:979
便簽加密的筆記在哪裡打開 瀏覽:845