第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何對實體進行動態(tài)設置數(shù)據(jù)?

如何對實體進行動態(tài)設置數(shù)據(jù)?

PHP
暮色呼如 2022-09-17 22:01:10
我想為對象設置許多JSON數(shù)據(jù),但我不想寫很多設置方法。例://(POST : JSON DATA) JSON keys equals entity variable names{"data1": "banana","data2": "index, follow","data3": "true","data4": "abcdef","data5": "false","big_data1": "lorem ipsum ....""name": "apple"  ....}我的實體(簡短版)class Category{ //.... private $data1; public setData1(string $data1): self{  $this->data1 = $data1;  return $this; } public getData1():string{ return $this->data1; } //...}我的控制器//...public function index(){  //post data json to object  $data = json_decode($postdata); # data object  $category = new Category(); # new category class  $object = new \ReflectionObject($category);  /**     What is the next step?     $this->setData1($data->data1);     $this->setData2($data->data2);     if(!empty($data->big_data12)       $this->setBigData12($data->big_data12)     .     .     .     $this->setData12($data->data12)  */}如何做一個簡單的方法?如何避免編寫許多集合方法?
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

根本不需要使用反射。你可以使用神奇的方法。具體說來。文檔。_call()


一個非常簡單、幼稚的實現(xiàn):


class Category

{

    private $data1;

    private $data2;

    private $data3;

    private $bigData12;


    public function __call($method, array $arguments)

    {

        $verb = substr($method, 0, 3);

        $noun = lcfirst(substr($method, 3));


        if (!property_exists($this, $noun)) {

            throw new Exception('Property does not exist');

        }


        switch($verb) {

            case 'set':

                $this->$noun = $arguments[0];

                return $this;


            case 'get':

                return $this->$noun;

        }

    }


}


$cat = new Category();

$cat->setData1('hello')

    ->setData2('hola')

    ->setData3(12345)

    ->setBigData12('hello world');


echo $cat->getData1(), "\n";

echo $cat->getData2(), "\n";

echo $cat->getData3(), "\n";

echo $cat->getBigData12(), "\n";

你可以在這里看到它的工作原理。


請注意,我不建議這樣做太多。這種事情非常容易出錯,不能被類型暗示,收益從微不足道到根本不存在。


查看完整回答
反對 回復 2022-09-17
  • 1 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號