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

首頁 後端開發(fā) php教程 php 物件導向中常用的關鍵字和魔術方法詳解

php 物件導向中常用的關鍵字和魔術方法詳解

Jul 10, 2017 am 11:46 AM
php 關鍵字 用的

1.construct()

實例化物件是被自動呼叫。當construct和以類別名為函數(shù)名的函數(shù) 同時存在時呼叫construct,另一個不背呼叫。

類別名為函數(shù)名的函式為老版的建構(gòu)子。

2.destruct()

當刪除一個物件或一個物件操作結(jié)束是被呼叫。

3.call()

物件呼叫某個方法。若方法不存在,這呼叫call 這個方法

4.get()

讀取一個物件屬性,如果物件屬性是私有的會呼叫它

#5. set()

給一個物件屬性賦值時如果屬性是私有的會呼叫它

#6.toString()

列印一個物件的時候會被呼叫。

7.clone()

複製物件時被調(diào)用,如:$a=new test(); $a1=clone $a;

8.sleep( )

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

9.wakeup()

Unserialize時被調(diào)用,做些物件的初始化工作。

10.isset()

偵測一個物件的屬性是否存在如果 偵測的屬性是私有的時候會被呼叫。

11.unset()

刪除一個物件屬性時如果刪除的物件屬性是私有的會被呼叫

12.set_state()

呼叫var_export時,被呼叫。用set_state的回傳值做為var_export的回傳值。

13.autoload()

當實例化一個物件時,如果對應的類別不存在,則該方法被掉用。


下面小編就為大家?guī)硪黄斦?a href="http://m.miracleart.cn/code/147.html" target="_blank">PHP物件導向中常用的關鍵字和魔術方法。小編覺得蠻不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

PHP物件導向中常用的關鍵字???

##final

1.final不能修飾成員屬性(類別中常數(shù)不是用這個關鍵字)

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類,所以會報錯
class Student extends Person{
}

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

$stu->fun1();
?>

static(靜態(tài)關鍵字)

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

2.用static修飾的成員屬性,可以被同一個類別的所有物件共享

3.靜態(tài)的資料是存在記憶體中的資料段中(初始化靜態(tài)段)

4.靜態(tài)的資料是在類別被第一次載入時分配到記憶體中的,以後再用到類別時就直接從資料段中取得

5.什麼是類被加載?只要在程式中使用到這個類別(有這個類別名稱出現(xiàn))

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

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

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

注意:靜態(tài)的成員都要使用類別名去訪問,不要

建立物件,不用物件存取

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

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

const

1.它只能修飾成員屬性

2.類別中宣告常數(shù)屬性使用const

3.存取方式和static靜態(tài)成員屬性一樣(在類別外部使用? 類別名稱::常數(shù)?? 在類別內(nèi)部使用self::常數(shù))

4.常數(shù)一定要在宣告的時候就給初值

<?php
//定義一個類“人們”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個常量
  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物件導向中常用的魔術方法

call()##作用:當呼叫物件中不存在的方法時,就會出現(xiàn)系統(tǒng)報錯,然後程式退出。

什麼時候會自動呼叫:就會在呼叫一個物件中不存在的方法時就會自動呼叫

處理一些不存在的錯誤呼叫

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

<?php
//定義一個類“人們”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個常量
  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>";
  }

  //處理一些不存在的錯誤調(diào)用
  //就會在調(diào)用一個對象中不存在的方法時就會自動調(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()#直接輸出物件引用的時候自動調(diào)用,用來快速取得字串表示的最快捷的方法

<?php
//定義一個類“人們”
class Person{
  protected $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個常量
  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()處理

原本(原來的物件)

複本(複製出來的物件)

clone()就是在複製物件時自動呼叫的方法

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

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

<?php
//定義一個類“人們”
class Person{
  var $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個常量
  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();
//這并不能叫做克隆對象,因為在析構(gòu)時只析構(gòu)一次
/*$p1=$p;
$p1->name="李四";
$p1->say();*/

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

autoload()

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

只要在頁面中使用到一個類,只要用到類名,就會自動將這個類名傳給這個參數(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>";
  }
}
?>

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

使用時間:

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

2.將對象在多個PHP文件中傳輸時

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

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

sleep()

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

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

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

wakeup()

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

也是對象重新誕生的過程

<?php
//定義一個類“人們”
class Person{
  var $name;
  protected $age;
  protected $sex;
  static $country="中國";
  //聲明一個常量
  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="男";
  }

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

  //是在反序列化時調(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 物件導向中常用的關鍵字和魔術方法詳解的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

PHP註釋代碼常用方法有三種:1.單行註釋用//或#屏蔽一行代碼,推薦使用//;2.多行註釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧註釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

PHP設置的簡單指南 PHP設置的簡單指南 Jul 18, 2025 am 04:25 AM

PHP設置的關鍵在於明確安裝方式、配置php.ini、連接Web服務器及啟用必要擴展。 1.安裝PHP:Linux用apt、Mac用Homebrew、Windows推薦XAMPP;2.配置php.ini:調(diào)整錯誤報告、上傳限制等並重啟服務器;3.搭配Web服務器:Apache通過mod_php,Nginx使用PHP-FPM;4.安裝常用擴展:如mysqli、json、mbstring等以支持完整功能。

撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

寫好PHP註釋的關鍵在於明確目的與規(guī)範,註釋應解釋“為什麼”而非“做了什麼”,避免冗餘或過於簡單。 1.使用統(tǒng)一格式,如docblock(/*/)用於類、方法說明,提升可讀性與工具兼容性;2.強調(diào)邏輯背後的原因,如說明為何需手動輸出JS跳轉(zhuǎn);3.在復雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便於後續(xù)追蹤與協(xié)作。好的註釋能降低溝通成本,提升代碼維護效率。

通過評論提高可讀性 通過評論提高可讀性 Jul 18, 2025 am 04:46 AM

寫好註釋的關鍵在於說明“為什麼”而非僅“做了什麼”,提升代碼可讀性。 1.註釋應解釋邏輯原因,例如值選擇或處理方式背後的考量;2.對複雜邏輯使用段落式註釋,概括函數(shù)或算法的整體思路;3.定期維護註釋確保與代碼一致,避免誤導,必要時刪除過時內(nèi)容;4.在審查代碼時同步檢查註釋,並通過文檔記錄公共邏輯以減少代碼註釋負擔。

學習PHP:初學者指南 學習PHP:初學者指南 Jul 18, 2025 am 04:54 AM

易於效率,啟動啟動tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

編寫有效的PHP評論 編寫有效的PHP評論 Jul 18, 2025 am 04:44 AM

註釋不能馬虎是因為它要解釋代碼存在的原因而非功能,例如兼容老接口或第三方限制,否則看代碼的人只能靠猜。必須加註釋的地方包括複雜的條件判斷、特殊的錯誤處理邏輯、臨時繞過的限制。寫註釋更實用的方法是根據(jù)場景選擇單行註釋或塊註釋,函數(shù)、類、文件開頭用文檔塊註釋說明參數(shù)與返回值,並保持註釋更新,對複雜邏輯可在前面加一行概括整體意圖,同時不要用註釋封存代碼而應使用版本控制工具。

掌握PHP塊評論 掌握PHP塊評論 Jul 18, 2025 am 04:35 AM

PHPblockcommentsareusefulforwritingmulti-lineexplanations,temporarilydisablingcode,andgeneratingdocumentation.Theyshouldnotbenestedorleftunclosed.BlockcommentshelpindocumentingfunctionswithPHPDoc,whichtoolslikePhpStormuseforauto-completionanderrorche

See all articles