亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

復習PHP-語言參考-預定義接口

發布時間:2020-05-26 22:51:50 來源:網絡 閱讀:242 作者:qzd1989 欄目:web開發

1.Traversable

他是一個遍歷接口規范

注意:發現一個有用的函數get_declared_classes,可以以數組形式顯示當前腳本下所有已經定義的類名

2.Iterator

Iterator迭代器繼承自Traversable,是一種遍歷對象內容的對象。

你可以自己寫一個子類繼承自它,并寫上具體遍歷的方法。

Iterator包含:current(返回當前元素),key(當前鍵),next(下一個元素),rewind(返回至初始元素),valid(檢測當前元素是否存在)五種方法。

3.IteratorAggregate

與Iterator不同的是 通過這個接口可以用此基類的getIterator方法返回一個外部迭代器對象用于遍歷子類對象內容。

4.arrayaccess

可以通過這個數組式訪問接口動態添加修改和訪問數組的屬性

  • ArrayAccess::offsetExists — 檢查一個偏移位置是否存在
  • ArrayAccess::offsetGet — 獲取一個偏移位置的值
  • ArrayAccess::offsetSet — 設置一個偏移位置的值
  • ArrayAccess::offsetUnset — 復位一個偏移位置的值

 

挺好的一個東西,和__get  __set 類似。

例:

<?php
class obj implements ArrayAccess
{
    private $array = [];
    /**
     * @param offset
     */
    public function offsetExists ($offset) {
        return isset($array[$offset]);
    }   
    /**
     * @param offset
     */
    public function offsetGet ($offset) {
        return $this->offsetExists($offset)?$this->array[$offset]:NULL;
    }   
    /**
     * @param offset
     * @param value
     */
    public function offsetSet ($offset, $value) {
        if(!is_null($offset))
        {
            $this->array[$offset] = $value;
        }
        else{
            $this->array[] = $value;
        }
    }   
    /**
     * @param offset
     */
    public function offsetUnset ($offset) {
        unset($this->array[$offset]);
    }
}
$obj = new obj;
$obj['a'] = 5;
$obj['b'] = "string";
$obj['c'] = 6.7;
$obj['d'] = [2,3,4];
$obj[] = "haha";
unset($obj['a']);
print_r($obj);
?>

5.序列化接口

自定義序列化和反序列化規則。

見下列,序列化的接口可以重載系統內置函數serialize和unserialize。是否可以用此來加密對象?

<?php
class a implements Serializable
{
    private $data = "abcde";
    public function serialize () {
        echo __METHOD__;
        return serialize($this->data);   
    }
    public function unserialize ($serialized) {
        echo __METHOD__;
        return unserialize($this->data);
    }
    public function getData()
    {
        return $this->data;
    }   
}
$obj = new a;
$nobj = serialize($obj);
echo $nobj;
?>

6.Closure類

它和閉包函數非常相似

例:

<?php
//1.匿名函數
$a = function ($param){echo $param;};
//2.簡單的閉包
//2.1
function p()
{
    $f = function($str)
    {
        echo $str;
    };
    $f("something");
}
//2.2
function d()
{
    return function ($str){echo $str;};
}
//2.3 注意這里的$f是一個函數
function e($f)
{
    $f("something");
}
//2.4
e(function($str){echo $str;});
//3.連接閉包和外部變量的關鍵詞 use 這在之前寫購物車類時已經用過了
function get()
{
    $rmb = 1;
    $func = function() use (&$rmb)
    {
        ++$rmb;
        echo $rmb;
    };
    $func(); // print 2;
    //或者return $func;
    return $func;   
}
?>

發現一種新的寫法:靜態函數

<?php
$a = static function()
{
    echo "good";
};
$a();
?>

注意:closure的bind和bindTo跳過了 因為只支持5.4 所以實際運用中不多見,暫時不看了。

本章主要是迭代器的理解。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁河县| 红原县| 汝城县| 朝阳市| 张家川| 会泽县| 巨鹿县| 三都| 宝山区| 桐城市| 应城市| 富川| 宕昌县| 吴旗县| 年辖:市辖区| 深水埗区| 澄迈县| 奉贤区| 广南县| 扶余县| 杭锦旗| 内江市| 双江| 论坛| 霞浦县| 淮阳县| 泸西县| 大厂| 嫩江县| 大丰市| 昌宁县| 兴宁市| 克拉玛依市| 黔江区| 平南县| 青川县| 增城市| 西林县| 乐平市| 阿拉善左旗| 襄汾县|