最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年02月04日 10:02:28   投稿:jingxian  
下面小編就為大家?guī)硪黄斦凱HP面向?qū)ο笾谐S玫年P(guān)鍵字和魔術(shù)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

final

1.final不能修飾成員屬性(類中常量不是用這個關(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類,所以會報錯
class Student extends Person{
}

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

$stu->fun1();
?>

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

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

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

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

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

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)的成員都要使用類名去訪問,不要創(chuàng)建對象,不用對象訪問

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

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

const

1.它只能修飾成員屬性

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

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

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

<?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面向?qū)ο笾谐S玫哪g(shù)方法

__call()

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

什么時候自動調(diào)用:就會在調(diào)用一個對象中不存在的方法時就會自動調(diào)用

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

這個方法需要兩個參數(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()處理

原本(原來的對象)

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

__clone()就是在克隆對象時自動調(diào)用的方法

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

在__clone()方法中的$this關(guān)鍵字代表的是復(fù)本的對象,$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ù)方法都是在類中添加起作用,這是唯一一個不在類中添加的方法

只要在頁面中使用到一個類,只要用到類名,就會自動將這個類名傳給這個參數(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面向?qū)ο笾谐S玫年P(guān)鍵字和魔術(shù)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • PHP定時任務(wù)延緩執(zhí)行的實現(xiàn)

    PHP定時任務(wù)延緩執(zhí)行的實現(xiàn)

    這篇文章主要介紹了PHP定時任務(wù)延緩執(zhí)行的實現(xiàn),很簡單,但很實用,需要的朋友可以參考下面的示例
    2014-10-10
  • 解決php表單重復(fù)提交實現(xiàn)方法

    解決php表單重復(fù)提交實現(xiàn)方法

    這篇文章主要介紹了解決php表單重復(fù)提交實現(xiàn)方法,需要的朋友可以參考下
    2015-09-09
  • PHP 截取字符串專題集合

    PHP 截取字符串專題集合

    現(xiàn)在很多情況下,需要用到截取字符串功能,不夠由于gb2312與utf-8的編碼問題,需要區(qū)別對待,下面是具體的實現(xiàn)方法并從一些比較成熟的系統(tǒng)中扒下的代碼。
    2010-08-08
  • php文件夾的創(chuàng)建與刪除方法

    php文件夾的創(chuàng)建與刪除方法

    這篇文章主要介紹了php文件夾的創(chuàng)建與刪除方法,實例分析了php創(chuàng)建與刪除文件夾的技巧,需要的朋友可以參考下
    2015-01-01
  • 實例講解PHP表單

    實例講解PHP表單

    這篇文章主要介紹了PHP表單相關(guān)知識,文中講解非常細(xì)致,代碼幫助大家更好的參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • php獲取文章上一頁與下一頁的方法

    php獲取文章上一頁與下一頁的方法

    這篇文章主要介紹了php獲取文章上一頁與下一頁的方法,實例分析了獲取當(dāng)前文章上一頁與下一頁文章的方法,是進行PHP項目開發(fā)中非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • 如何使用PHP計算上一個月的今天

    如何使用PHP計算上一個月的今天

    本篇文章是對用PHP計算上一個月的今天的實例進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • PHP對象、模式與實踐之高級特性分析

    PHP對象、模式與實踐之高級特性分析

    這篇文章主要介紹了PHP對象、模式與實踐之高級特性,結(jié)合實例形式分析了php面向?qū)ο蟪绦蛟O(shè)計中的靜態(tài)屬性和方法、抽象類、接口、攔截器、克隆對象等概念與簡單實現(xiàn)方法,需要的朋友可以參考下
    2016-12-12
  • php socket實現(xiàn)的聊天室代碼分享

    php socket實現(xiàn)的聊天室代碼分享

    這篇文章主要介紹了php socket實現(xiàn)的聊天室代碼分享,本文實現(xiàn)代碼來自國外友人,需要的朋友可以參考下
    2014-08-08
  • PHP進階學(xué)習(xí)之命名空間基本用法分析

    PHP進階學(xué)習(xí)之命名空間基本用法分析

    這篇文章主要介紹了PHP進階學(xué)習(xí)之命名空間基本用法,簡單分析了php命名空間的基本概念、功能并結(jié)合實例形式描述了命名空間的用法與相關(guān)操作注意事項,需要的朋友可以參考下
    2019-06-06

最新評論

鄂托克旗| 铁岭县| 望都县| 子洲县| 玛纳斯县| 区。| 镇雄县| 东兰县| 舟曲县| 涡阳县| 石台县| 永福县| 大荔县| 固始县| 西城区| 扶绥县| 南部县| 镇巴县| 玛多县| 大冶市| 大竹县| 富锦市| 琼结县| 抚松县| 武平县| 萨嘎县| 牡丹江市| 德清县| 中卫市| 安西县| 缙云县| 满城县| 新竹市| 当涂县| 徐州市| 襄樊市| 长丰县| 天气| 吴江市| 东城区| 荔浦县|