91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

PHP中怎么獲取類和對象的屬性字段

發布時間:2021-06-29 16:44:38 來源:億速云 閱讀:490 作者:Leah 欄目:大數據

本篇文章為大家展示了PHP中怎么獲取類和對象的屬性字段,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

get_class_vars

獲取類的公有屬性及默認值(包含公有的靜態屬性),用來列舉類的公有屬性字段。

get_object_vars

獲取對象的公有屬性及屬性值(不包含公有的靜態屬性)。

ReflectionClass

如果想要獲取對象的各類屬性(public/protected/private | static),就需要借助強大的反射類來完成了。 PHP 提供了 \ReflectionClass::class 可以幫助我們解析類的實例對象,通過 \ReflectionClass::getProperties方法獲取對象所有的屬性值。

實例

<?php

class Foo
{
    // 類常量
    const CLASS_NAME = "Foo";

    // 成員屬性
    public $name;

    protected $sex = "female";

    private $age;

    // 類靜態屬性
    // php 的對象是可以訪問類的 static 屬性的
    // 但應該使用類的方式訪問更為規范
    // const 屬性只能通過類的方式訪問
    public static $bar = "bar";

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

    /**
     * 獲取對象的屬性字段及屬性值
     * @param  [type]  $property_scope  屬性域
     * @param  boolean $static_excluded 是否包含靜態屬性
     * @return array
     * @throws \ReflectionException|\Exception
     */
    public function getProperties($property_scope = null, $static_excluded = false)
    {
        // 校驗反射域是否合法
        if (isset($property_scope) && !in_array($property_scope, [
            \ReflectionProperty::IS_STATIC,
            \ReflectionProperty::IS_PUBLIC,
            \ReflectionProperty::IS_PROTECTED,
            \ReflectionProperty::IS_PRIVATE,
        ])) {
            throw new Exception("reflection class property scope illegal!");
        }

        $properties_mapping = [];

        // 談判官
        $classRef           = new \ReflectionClass($this);
        $properties         = isset($property_scope) ? $classRef->getProperties($property_scope) : $classRef->getProperties();

        foreach ($properties as $property) {
            // 為了兼容反射私有屬性
            $property->setAccessible(true);

            // 當不想獲取靜態屬性時
            if ($property->isStatic() && $static_excluded) {
                continue;
            }

            // 將得到的類屬性同具體的實例綁定解析,獲得實例上的屬性值
            $properties_mapping[$property->getName()] = $property->getValue($this);
        }

        return $properties_mapping;
    }
}

$foo = new Foo("big_cat", "male", 29);

// 獲取類的公有屬性及默認值(包含靜態屬性)
var_dump(get_class_vars(get_class($foo)));

// 獲取對象的公有屬性及值(不包含類靜態屬性)
var_dump(get_object_vars($foo));

// 獲取對象的靜態屬性
var_dump($foo->getProperties(\ReflectionProperty::IS_STATIC));
// 獲取對象的公有屬性 并排除靜態屬性
var_dump($foo->getProperties(\ReflectionProperty::IS_PUBLIC, true));
// 獲取對象的保護屬性
var_dump($foo->getProperties(\ReflectionProperty::IS_PROTECTED));
// 獲取對象的私有屬性
var_dump($foo->getProperties(\ReflectionProperty::IS_PRIVATE));

其他參考

/**
 * 獲取類的常量屬性
 * @see https://www.php.net/manual/en/reflectionclass.getconstants.php
 */
\ReflectionClass::getConstants()

/**
 * 獲取類的方法
 * @see https://www.php.net/manual/en/reflectionclass.getmethods.php
 */
\ReflectionClass::getMethods()

上述內容就是PHP中怎么獲取類和對象的屬性字段,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

php
AI

南靖县| 文登市| 伊金霍洛旗| 宣武区| 额敏县| 巩留县| 麻江县| 崇阳县| 肇州县| 南部县| 临汾市| 招远市| 华池县| 南宫市| 金川县| 康保县| 沁水县| 建宁县| 吉水县| 同德县| 天气| 印江| 新竹县| 松桃| 景洪市| 万山特区| 广汉市| 长寿区| 赤壁市| 蚌埠市| 滦平县| 赫章县| 沂水县| 乌鲁木齐县| 精河县| 全州县| 凉城县| 元谋县| 长兴县| 沙坪坝区| 铁岭市|