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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何對(duì)實(shí)體進(jìn)行動(dòng)態(tài)設(shè)置數(shù)據(jù)?

如何對(duì)實(shí)體進(jìn)行動(dòng)態(tài)設(shè)置數(shù)據(jù)?

PHP
暮色呼如 2022-09-17 22:01:10
我想為對(duì)象設(shè)置許多JSON數(shù)據(jù),但我不想寫很多設(shè)置方法。例://(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"  ....}我的實(shí)體(簡(jiǎn)短版)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)  */}如何做一個(gè)簡(jiǎn)單的方法?如何避免編寫許多集合方法?
查看完整描述

1 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

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


一個(gè)非常簡(jiǎn)單、幼稚的實(shí)現(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";

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


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


查看完整回答
反對(duì) 回復(fù) 2022-09-17
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)