国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 php 面向?qū)ο笾谐S玫年P(guān)鍵字和魔術(shù)方法詳解

php 面向?qū)ο笾谐S玫年P(guān)鍵字和魔術(shù)方法詳解

Jul 10, 2017 am 11:46 AM
php 關(guān)鍵字 實(shí)際的

1.construct()

實(shí)例化對象是被自動(dòng)調(diào)用。當(dāng)construct和以類名為函數(shù)名的函數(shù) 同時(shí)存在時(shí)調(diào)用construct,另一個(gè)不背調(diào)用。

類名為函數(shù)名的函數(shù)為老版的構(gòu)造函數(shù)。

2.destruct()

當(dāng)刪除一個(gè)對象或一個(gè)對象操作結(jié)束是被調(diào)用。

3.call()

對象調(diào)用某個(gè)方法。若方法不存在,這調(diào)用call 這個(gè)方法

4.get()

讀取一個(gè)對象屬性,如果對象屬性是私有的會(huì)調(diào)用它

5.set()

給一個(gè)對象屬性賦值時(shí)如果屬性是私有的會(huì)調(diào)用它

6.toString()

打印一個(gè)對象的時(shí)候會(huì)被調(diào)用。

7.clone()

克隆對象時(shí)被調(diào)用,如:$a=new test(); $a1=clone $a;

8.sleep()

Serialize 之前被調(diào)用,若對象比較大,想刪減一點(diǎn)東西在序列化可以用它。

9.wakeup()

Unserialize時(shí)被調(diào)用,做些對象的初始化工作。

10.isset()

檢測一個(gè)對象的屬性是否存在如果 檢測的屬性是私有的時(shí)候會(huì)被調(diào)用。

11.unset()

刪除一個(gè)對象屬性時(shí)如果 刪除的對象屬性是私有的會(huì)被調(diào)用

12.set_state()

調(diào)用var_export時(shí),被調(diào)用。用set_state的返回值做為var_export的返回值。

13.autoload()

實(shí)例化一個(gè)對象時(shí),如果對應(yīng)的類不存在,則該方法被掉用。


下面小編就為大家?guī)硪黄斦?a href="http://www.miracleart.cn/code/147.html" target="_blank">PHP面向?qū)ο?/a>中常用的關(guān)鍵字和魔術(shù)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

PHP面向?qū)ο笾谐S玫年P(guān)鍵字???

final

1.final不能修飾成員屬性(類中常量不是用這個(gè)關(guān)鍵字)

2.final只能修飾類和方法

作用:

使用final修飾的類不能被子類繼承

使用final修飾的方法不能被子類覆蓋

用來限制類不被繼承,方法不被覆蓋就使用final

<?php
//final修飾的類不能被繼承
final class Person{
  var $name;
  var $age;
  var $sex;

  function construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function fun1(){
    echo $this->name;
  }
}

//Student類繼承類用final修飾的Person類,所以會(huì)報(bào)錯(cuò)
class Student extends Person{
}

$stu=new Student("zs",20,"nan");

$stu->fun1();
?>

static(靜態(tài)關(guān)鍵字)

1.使用static可以修飾成員屬性和成員方法,不能修飾類

2.用static修飾的成員屬性,可以被同一個(gè)類的所有對象共享

3.靜態(tài)的數(shù)據(jù)是存在內(nèi)存中的數(shù)據(jù)段中(初始化靜態(tài)段)

4.靜態(tài)的數(shù)據(jù)是在類被第一次加載時(shí)分配到內(nèi)存中的,以后再用到類時(shí)就直接從數(shù)據(jù)段中獲取

5.什么是類被加載?只要在程序中使用到這個(gè)類(有這個(gè)類名出現(xiàn))

6.靜態(tài)方法(static修飾的方法),不能訪問非靜態(tài)的成員(在非靜態(tài)方法中可以訪問靜態(tài)成員)

因?yàn)榉庆o態(tài)的成員,就必須用對象來訪問,訪問內(nèi)部成員使用的就是$this,而靜態(tài)方法不用使用對象調(diào)用,也就沒有對象,$this也就不能代表對象,非靜態(tài)的成員還必須使用對象

如果你確定一個(gè)方法中不使用非靜態(tài)成員,則可以將這個(gè)方法聲明為即靜態(tài)方法

注意:靜態(tài)的成員都要使用類名去訪問,不要創(chuàng)建對象,不用對象訪問

類名::靜態(tài)成員

如果在類中使用靜態(tài)成員,可以使用self代表本類

const

1.它只能修飾成員屬性

2.類中聲明常量屬性使用const

3.訪問方式和static靜態(tài)成員屬性一樣(在類外部使用? 類名::常量?? 在類內(nèi)部使用 self::常量)

4.常量一定要在聲明的時(shí)候就給初值

<?php
//定義一個(gè)類“人們”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個(gè)常量
  const RUN="走";

  //構(gòu)造方法
  function construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function getCountry(){
    //如果在類中使用靜態(tài)成員,可以使用self代表本類
    return self::$country;
  }

  function say(){
    echo "我的名字:{$this->name},我的年齡:{$this->age},我的性別:{$this->sex}。<br>";
  }

  protected function eat(){
    echo "吃飯!<br>";
  }

  function run(){
    //在類的內(nèi)部使用常量 self::常量
    echo self::RUN."<br>";
  }

  //聲明靜態(tài)的方法
  static function hello(){
    echo "你好<br>";
  }
}

PHP面向?qū)ο笾谐S玫哪g(shù)方法

call()

作用:調(diào)用對象中不存在的方法時(shí),就會(huì)出現(xiàn)系統(tǒng)報(bào)錯(cuò),然后程序退出。

什么時(shí)候自動(dòng)調(diào)用:就會(huì)在調(diào)用一個(gè)對象中不存在的方法時(shí)就會(huì)自動(dòng)調(diào)用

處理一些不存在的錯(cuò)誤調(diào)用

這個(gè)方法需要兩個(gè)參數(shù)

<?php
//定義一個(gè)類“人們”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個(gè)常量
  const RUN="走";

  //構(gòu)造方法
  function construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function getCountry(){
    //如果在類中使用靜態(tài)成員,可以使用self代表本類
    return self::$country;
  }

  function say(){
    echo "我的名字:{$this->name},我的年齡:{$this->age},我的性別:{$this->sex}。<br>";
  }

  protected function eat(){
    echo "吃飯!<br>";
  }

  function run(){
    //在類的內(nèi)部使用常量 self::常量
    echo self::RUN."<br>";
  }

  //處理一些不存在的錯(cuò)誤調(diào)用
  //就會(huì)在調(diào)用一個(gè)對象中不存在的方法時(shí)就會(huì)自動(dòng)調(diào)用
  function call($methodName,$args){
    //$methodName調(diào)用不存在方法的方法名 $args里面的參數(shù)
    echo "你調(diào)用的方法{$methodName}(參數(shù):";
    print_r($args);
    echo ")不存在<br>";
  }

  //聲明靜態(tài)的方法
  static function hello(){
    echo "你好<br>";
  }
}

$p=new Person("張三",20,"女");

$p->test(10,20,30);
$p->demo("aa","bb");
$p->say();
?>

toString()

直接輸出對象引用的時(shí)候自動(dòng)調(diào)用,用來快速獲取字符串表示的最快捷的方法

<?php
//定義一個(gè)類“人們”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個(gè)常量
  const RUN="走";

  //構(gòu)造方法
  function construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function say(){
    echo "我的名字:{$this->name},我的年齡:{$this->age},我的性別:{$this->sex}。<br>";
  }

  function toString(){
    return self::$country."<br>{$this->name}<br>{$this->age}<br>{$this->sex}<br>".self::RUN;
  }
}

$p=new Person("張三",21,"女");
echo $p;
?>

clone()

克隆對象使用clone()處理

原本(原來的對象)

復(fù)本(復(fù)制出來的對象)

clone()就是在克隆對象時(shí)自動(dòng)調(diào)用的方法

只要一個(gè)對象一創(chuàng)建,就要有初始化的動(dòng)作,和構(gòu)造方法constuct作用相似

在clone()方法中的$this關(guān)鍵字代表的是復(fù)本的對象,$that代表原本對象

<?php
//定義一個(gè)類“人們”
class Person{
  var $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個(gè)常量
  const RUN="走";

  //構(gòu)造方法
  function construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function say(){
    echo "我的名字:{$this->name},我的年齡:{$this->age},我的性別:{$this->sex}。<br>";
  }

  function clone(){
    $this->name="王五";
    $this->age=18;
    $this->sex="男";
  }

  function destruct(){
    echo $this->name."<br>";
  }
}

$p=new Person("張三",21,"女");
$p->say();
//這并不能叫做克隆對象,因?yàn)樵谖鰳?gòu)時(shí)只析構(gòu)一次
/*$p1=$p;
$p1->name="李四";
$p1->say();*/

$p1= clone $p;
$p1->say();
?>

autoload()

注意:其它的魔術(shù)方法都是在類中添加起作用,這是唯一一個(gè)不在類中添加的方法

只要在頁面中使用到一個(gè)類,只要用到類名,就會(huì)自動(dòng)將這個(gè)類名傳給這個(gè)參數(shù)

<?php
function autoload($className){
  include "./test/".$className.".class.php";
}

  $o=new One;
  $o->fun1();  

  $t=new Two;
  $t->fun2();

  $h=new Three;
  $h->fun3();

?>

test里的文件

one.class.php

<?php
class One{
  function fun1(){
    echo "The Class One<br>";
  }
}
?>

two.class.php

<?php
class Two{
  function fun2(){
    echo "The Class Two<br>";
  }
}
?>

three.class.php

<?php
class Three{
  function fun3(){
    echo "The Class Three<br>";
  }
}
?>

對象串行化(序列化):將一個(gè)對象轉(zhuǎn)為二進(jìn)制串(對象是存儲在內(nèi)存中的,容易釋放)

使用時(shí)間:

1.將對象長時(shí)間存儲在數(shù)據(jù)庫或文件中時(shí)

2.將對象在多個(gè)PHP文件中傳輸時(shí)

serialize(); 參數(shù)是一個(gè)對象,返回來的就是串行化后的二進(jìn)制串

unserialize(); 參數(shù)就是對象的二進(jìn)制串,返回來的就是新生成的對象

sleep()

是在序列化時(shí)調(diào)用的方法

作用:就是可以將一個(gè)對象部分串行化

只要這個(gè)方法中返回一個(gè)數(shù)組,數(shù)組中有幾個(gè)成員屬性就序列化幾個(gè)成員屬性,如果不加這個(gè)方法,則所有成員都被序列化

wakeup()

是在反序列化時(shí)調(diào)用的方法

也是對象重新誕生的過程

<?php
//定義一個(gè)類“人們”
class Person{
  var $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個(gè)常量
  const RUN="走";

  //構(gòu)造方法
  function construct($name,$age,$sex){
    $this->name=$name;
    $this->age=$age;
    $this->sex=$sex;
  }

  function say(){
    echo "我的名字:{$this->name},我的年齡:{$this->age},我的性別:{$this->sex}。<br>";
  }

  function clone(){
    $this->name="王五";
    $this->age=18;
    $this->sex="男";
  }

  //是在序列化時(shí)調(diào)用的方法,可以部分串行化對象
  function sleep(){
    return array("name","age");
  }

  //是在反序列化時(shí)調(diào)用的方法,也是對象重新誕生的過程??梢愿淖兝锩娴闹?
  function wakeup(){
    $this->name="sanzhang";
    $this->age=$this->age+1;
  }

  function destruct(){

  }
}
?>

read.php

<?php
  require "11.php";
  
  $str=file_get_contents("mess.txt");
  $p=unserialize($str);

  echo $p->say();
?>

write.php

<?php
  require "11.php";

  $p=new Person("張三",18,"男");

  $str=serialize($p);

  file_put_contents("mess.txt",$str);
?>

以上是php 面向?qū)ο笾谐S玫年P(guān)鍵字和魔術(shù)方法詳解的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何將兩個(gè)PHP陣列組合獨(dú)特的值? 如何將兩個(gè)PHP陣列組合獨(dú)特的值? Jul 02, 2025 pm 05:18 PM

要合并兩個(gè)PHP數(shù)組并保留唯一值,有兩種主要方法。1.對于索引數(shù)組或僅需值去重的情況,使用array_merge和array_unique組合:先用array_merge($array1,$array2)合并數(shù)組,再用array_unique()去重,最終得到包含所有唯一值的新數(shù)組;2.對于關(guān)聯(lián)數(shù)組且希望保留第一個(gè)數(shù)組中的鍵值對時(shí),使用 運(yùn)算符:$result=$array1 $array2,這將確保第一個(gè)數(shù)組中的鍵不會(huì)被第二個(gè)數(shù)組覆蓋。這兩種方法分別適用于不同場景,根據(jù)是否需要保留鍵名或只關(guān)注

如何使用PHP退出功能? 如何使用PHP退出功能? Jul 03, 2025 am 02:15 AM

exit()是PHP中用于立即終止腳本執(zhí)行的函數(shù),常見用途包括:1.在檢測到異常情況時(shí)提前終止腳本,如文件不存在或驗(yàn)證失??;2.調(diào)試時(shí)輸出中間結(jié)果并停止執(zhí)行;3.結(jié)合header()重定向后調(diào)用exit()防止后續(xù)代碼執(zhí)行;此外,exit()可接受字符串參數(shù)作為輸出內(nèi)容或整數(shù)作為狀態(tài)碼,其別名為die()。

將語義結(jié)構(gòu)應(yīng)用于html的文章,部分和旁邊 將語義結(jié)構(gòu)應(yīng)用于html的文章,部分和旁邊 Jul 05, 2025 am 02:03 AM

在HTML中合理使用語義化標(biāo)簽?zāi)芴嵘撁娼Y(jié)構(gòu)清晰度、可訪問性和SEO效果。1.用于獨(dú)立內(nèi)容區(qū)塊,如博客文章或評論,需保持自包含性;2.用于歸類相關(guān)內(nèi)容,通常包含標(biāo)題,適用于頁面不同模塊;3.用于與主內(nèi)容相關(guān)但非核心的輔助信息,如側(cè)邊欄推薦或作者簡介。實(shí)際開發(fā)中應(yīng)結(jié)合、等標(biāo)簽,避免過度嵌套,保持結(jié)構(gòu)簡潔,并通過開發(fā)者工具驗(yàn)證結(jié)構(gòu)合理性。

如何在PHP中創(chuàng)建數(shù)組? 如何在PHP中創(chuàng)建數(shù)組? Jul 02, 2025 pm 05:01 PM

在PHP中創(chuàng)建數(shù)組的方法有兩種:使用array()函數(shù)或使用中括號[]。1.使用array()函數(shù)是傳統(tǒng)方式,兼容性好,定義索引數(shù)組如$fruits=array("apple","banana","orange"),關(guān)聯(lián)數(shù)組如$user=array("name"=>"John","age"=>25);2.使用[]是從PHP5.4開始支持的更簡潔的方式,如$color

請求的操作需要高程窗戶 請求的操作需要高程窗戶 Jul 04, 2025 am 02:58 AM

遇到“此操作需要提升權(quán)限”提示時(shí),說明你需要管理員權(quán)限才能繼續(xù)。解決方法包括:1.右鍵選擇“以管理員身份運(yùn)行”程序或設(shè)置快捷方式始終以管理員身份運(yùn)行;2.檢查當(dāng)前賬戶是否為管理員賬戶,若不是則切換或請求管理員協(xié)助;3.用管理員權(quán)限打開命令提示符或PowerShell執(zhí)行相關(guān)命令;4.在必要時(shí)通過獲取文件所有權(quán)或修改注冊表等手段繞過限制,但此類操作需謹(jǐn)慎并充分了解風(fēng)險(xiǎn)。確認(rèn)權(quán)限身份并嘗試上述方法通??山鉀Q問題。

PHP原始帖子數(shù)據(jù)PHP PHP原始帖子數(shù)據(jù)PHP Jul 02, 2025 pm 04:51 PM

在PHP中處理原始POST數(shù)據(jù)的方法是使用$rawData=file_get_contents('php://input'),適用于接收J(rèn)SON、XML或其他自定義格式數(shù)據(jù)。1.php://input是一個(gè)只讀流,僅在POST請求中有效;2.常見問題包括服務(wù)器配置或中間件已讀取輸入流導(dǎo)致無法獲取數(shù)據(jù);3.應(yīng)用場景包括接收前端fetch請求、第三方服務(wù)回調(diào)和構(gòu)建RESTfulAPI;4.與$_POST的區(qū)別在于$_POST自動(dòng)解析標(biāo)準(zhǔn)表單數(shù)據(jù),而原始數(shù)據(jù)適合非標(biāo)準(zhǔn)格式并允許手動(dòng)解析;5.普通HTM

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗(yàn)證來源與類型、控制文件名與路徑、設(shè)置服務(wù)器限制并二次處理媒體文件。1.驗(yàn)證上傳來源通過token防止CSRF并通過finfo_file檢測真實(shí)MIME類型使用白名單控制;2.重命名文件為隨機(jī)字符串并根據(jù)檢測類型決定擴(kuò)展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時(shí)目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

您如何按值與PHP中的參考傳遞變量? 您如何按值與PHP中的參考傳遞變量? Jul 08, 2025 am 02:42 AM

InPHP,variablesarepassedbyvaluebydefault,meaningfunctionsorassignmentsreceiveacopyofthedata,whilepassingbyreferenceallowsmodificationstoaffecttheoriginalvariable.1.Whenpassingbyvalue,changestothecopydonotimpacttheoriginal,asshownwhenassigning$b=$aorp

See all articles