方法同时返回并重置属性?

让我们从这个示例类开始:


class Widget {

    private static $items = [];

    public static function resetitems() { self::$items = []; }

    public static function getitems()   { return self::$items; }

    public static function doobie() {

        // does something and adds a ton of junk to self::$items

    }

}

现在可以这样完成获取和重置属性的方法:


    Widget::doobie();

    $items = Widget::getitems();

    Widget::resetitems();

但是,我不是总是必须resetitems在之后调用getitems(当意图始终是获取和重置时),而是尝试找到一种更优雅的方法来getitems在返回期间自动执行此操作。


我可以这样做:


    public static function getitems() {

        $wasteofspace = self::$items;

        self::resetitems();

        return $wasteofspace;

    }

但难道不应该有一种方法可以返回直接属性本身并同时调用重置吗?像这样的东西(但这显然行不通哈哈):


    public static function getitems() {

        return self::$items & self::resetitems();

    }


一只斗牛犬
浏览 64回答 1
1回答

至尊宝的传说

您可以使用array_splice():   public static function get_and_reset_items() {            return array_splice(self::$items, 0);     }
打开App,查看更多内容
随时随地看视频慕课网APP