53. 实体Entity(五)内容实体基类

龸龵龱龮龭龪龦龢龦龡龝龛龚龖龓龭龐龏龎龍龛龊龈龅龃龁龀齾齽齼齸齶齴drupal龓齝龚龛齚齘齶龁齕齑齐齌齋齇龛齃鼿龁龀齾齽齼龛龚齇鼽鼹鼸鼷鼴龓龦鼳鼱龁龏龎龍鼰鼬齇龛鼩鼥龁齑鼣鼢鼡齕龛鼝鼰鼚鼖龁鼕鼒龍鼎鼸鼊鼇鼆鼰鼄鼀黽龁鼳黹黸齑黶黴黳黯黮黫黧龚龛黤黡鼷齴齚黠黠黟黝龎黜黙黗龛龁黔黓龛鼕鼒龍黒黑黐黌齕龛黊黉龁黈鼰黑黐齕龛黄黃黀龃龁鼝麿鼰鼳麼龛麹鼇齝麸麶龁龏龎龍麳麱齴齚黠黐麮龛龁麫齴麪麦麣黐黮黫麟麞黮麜麘麗麓麸麫黗龁麏麌麋麦麉麅黗麁麀齕鹾

龀齾齽齼齸齶鹼鹺黌龀齾齽齼龛鹷齑鼹鼸龁鹵齼龛龀齾齽齼鹳鹰齕鹯黒黸齑鹮鹭鹫麘龵鹩鼎鹧鹣龁麱鹠龀齾齽齼齶鹜齴鹘鹕鼎鹑鹍黃龛龁龀齾齽齼齶黒鹌鹋鹉齘鹑鹍鹇鹆鹃鹑鹍龛鹁鸾鸽鸼鼽鸸龁鸴鸳龸鸯鸭龁鸩鸥鸤齴鸣齚齘鹑鹍鸟鸣鹁鸾鸽鸼鸟龁鸞齸齶鼎麿鹕麱鸛鸯鸭鸘鸕龡龝龁鼳鼄鸘鸕鸒龛齽齼鸏鸩鸎龦齚黙龁鼳鹣黐黌麿鸊鸆鸅鸃鸁鹾

鸆鸅鸃鸁鸀

鹕黌齐齌鸽鸼齃鼿龁龀齾齽齼齸齶鹧鹣黌齚鷼鹭鷹龛鸆鸅鸃鸁龁鼳齴鸞齶龛鹷齑鷶鷴鷱鷭龁黶黴黌鼳齘鸃鸁鷬鷩齌鷦鸞齸齶黌龁鹕鷥鷤鷢鹮黌鷞麦黃麘龵鹣麿鼕鼒龍鷜鷚鸞鸃鸁龁鼎麿鷗鼳齘鸃鸁鷓鷐齇齽鷎鷋鷈鷇鷄鸃鸁麟鷁齼鸃鸁麟龱鶽鸃鸁鶺鶺龁鶸鶶齴鶴齑龛龁鶳齌鶱齴鹷齑龛龁麘龵鷹鸊鸀

<?php
class yunke
{
    public $values = []; //用于存放变量
    public $activeLangcode = "en";  //当前语言
    public $defaultLangcode = "en"; //建立对象时的源语言
    public $translations; //各个翻译对象

    public function __construct($langcode = NULL)
    {
        if (empty($langcode)) {
            $langcode = "en";
        }
        $this->activeLangcode = $langcode;  //设置当前语言
        $this->defaultLangcode = $langcode; //标记源语言
    }

    public function get($key)
    {
        if (isset($this->values[$key][$this->activeLangcode])) {
            return $this->values[$key][$this->activeLangcode];
        }
        return isset($this->values[$key][$this->defaultLangcode]) ? $this->values[$key][$this->defaultLangcode] : NULL;
    }

    public function set($key, $value, $isTranslatable = true)
    {
        if ($isTranslatable) {
            $this->values[$key][$this->activeLangcode] = $value;
            if (!isset($this->values[$key][$this->defaultLangcode])) {
                $this->values[$key][$this->defaultLangcode] = $value;
            }
        } else {
            $this->values[$key][$this->defaultLangcode] = $value;
        }
        return $this;
    }

    public function getTranslation($langcode)
    {
        if (isset($this->translations[$langcode])) {
            return $this->translations[$langcode];
        }
        if ($langcode == $this->activeLangcode) {
            $this->translations[$langcode] = $this;
            return $this;
        }
        return $this->initializeTranslation($langcode);
    }

    public function initializeTranslation($langcode)
    {
        $translation = clone $this;
        $translation->values = &$this->values;
        $translation->translations = &$this->translations;
        $translation->activeLangcode = $langcode;
        $translation->defaultLangcode = &$this->defaultLangcode;
        $this->translations[$langcode] = $translation;
        return $translation;
    }

    public function getLangcode()
    {
        return $this->activeLangcode;
    }

    public function getOriginalLangcode()
    {
        return $this->defaultLangcode;
    }
}

$en = new yunke("en");
$en->set("msg", " English"); //首次建立后使用的语言产生的内容
echo $en->get("msg");

$zh_hans = $en->getTranslation("zh-hans"); //建立翻译对象
echo $zh_hans->get("msg");  //未进行人工翻译时默认使用原始语言的内容
$zh_hans->set("msg", "简体中文"); //对某语言进行人工翻译
echo $zh_hans->get("msg");
echo $en->getTranslation("zh-hans")->get("msg");
echo $zh_hans->getTranslation("en")->get("msg"); //可以通过任何一种语言得到其他语言

$zh_hans->set("untranslatableMsg", 1234, false); //在任意语言下均可设置不可翻译内容 
echo $en->get("untranslatableMsg"); //在任意语言下均可使用不可翻译内容

$fr = $zh_hans->getTranslation("fr");
echo $fr->get("untranslatableMsg"); //在任意语言下均可使用不可翻译内容
?>

鳩鳦龍鷶鴏鸞麘龵龁鳢鳞鼣鼢鼡鼳齘鸃鸁鹯鳚鳖鼕鼒龀齾齽齼齸齶龁鸊鳔黗黑黑鼳齘齸齶鹾

龀齾齽齼齸齶鸀

龀齾齽齼鳓鳐鵃齽齼齴drupal龛鳌龚齽齼齶鹜龁鳓鳐鵃齽齼齸齶齚麼龁龀齾齽齼齸齶齴鳈鳇鳆鳅龛齚齘鹣龢龀齾齽齼龛鳂鵡齸齶龁鹳鹰龡齽齼齸齶龁鹼鹺黌龀齾齽齼龛龚鸾龱鴃鹣鼹鼸龁鹵齼龛龀齾齽齼鳁鳁鼊鹳鹰鲽龁鼳麼鹮鹭鹫麘龵鹩鼎龁齶鳆鳅鲺鸊鸀
Drupal\Core\Entity\ContentEntityBase
鳔鲮鵥鵡oop龏龎鼷鲪鸞齴鳔鲮鹌鲧龛龁鹌鲧鲦鲤黌鲢鲟鵥鲛龛鲗鹣鲔鲓龁齴鲐鳆龛龁鹧鹣鲌鳔麱鲈鸩鲅龀鸾齽龐龁黌鷦鹌鲧齝龭齑龁鳓鳐鵃齽齼鲁鱽龀齾齽齼鱺黮黫鼄龁鸞齸齶齽龐黌鲺鸊齇齘鹌鲧鸀
\IteratorAggregate
鱯鱫麜麘鱪鹌鲧龁php鶳鴙鲦鲤龁鱧鼬鱣龀齾齽齼鵮鷐鼽鱟齚麼黗鴑鴏鱝黀鱜鷴龁鷹鱙鱗鱓黶鹾
Drupal\Core\TypedData\TranslationStatusInterface
鸽鸼鱍鱋鹌鲧龁鳆鳅鳈鳇鲈齑龛麶鹫龁鲦鲤鱊鱈鹣龢鱆鱅齽齼龛鸽鸼龦鹉鸯鸭麘龵鸊龛鸽鸼鱍鱋
Drupal\Core\Entity\ContentEntityInterface
龀齾齽齼鹌鲧龁鱂鹣龢龀齾齽齼龁齴齚齘鰿鱫鹌鲧龁鰼鰸黌龀齾齽齼龁鹳鹰龡麿鸊鹌鲧鸀
Drupal\Core\Entity\FieldableEntityInterface
龚齇鼽龀齾齽齼齴齸龢鶶鷞鵥鵡龛龁鹯龍鱗鵮齽齼龛鷇鷄龁鰵鲅鳬鷥齐鰴龛鶶鷞鰰鰯鼽鸸鰮鰬龓龛鰩龁齚齘鶶鷞鵥鵡鼎麿鸴鸳齝齇齘鰩鰨鶶鷞鵥鵡鼎麿龱鷦鵻鵹龦鼽鸸鰮龓龁鸞鹌鲧鲦鲤鲁鸩鼹鼸龁鼳鳓鳐鵃齽齼龛鰤鵻鶳齌麱鸛龁鼎鶶鷞黃鰤鵻龛龀齾齽齼鵪鵨龦鰠鰜鲦鲤龛鶶鷞鱟鲟鰙鰕
Drupal\Core\Entity\RevisionableInterface
鹆鹃鼝鼰龀齾齽齼鳪鼎鰐鰍鹑鹍黃龁鰊麳鼎麿鸩鰆龁鸞鹌鲧鲦鲤鹑鹍黃鼹鼸
Drupal\Core\TypedData\TranslatableInterface
龦鳐鵃齽齼龓鴃龅鳐鵃鰃鹮黗齽龐鸽鸼鲁鸩龛鰀鯼龁鰊龀齾齽齼麱齚麼龁鼽鸸鹫黧龚龛齇龁黸齑鯹鹣鯷鲛龛鯶鯲龁齽龐鸞鹌鲧麿齐齌鸽鸼鴌鷴
\Traversable
鼎鱝黀鳂鵡鹌鲧龁php鶳鴙鲦鲤龁鯱黶龀齾齽齼齴鼎鱝黀龛

龸鸯鸭Original language鸀
鹆鹃鯮鯫鸊龀齾齽齼齴鰐鰍鼎鸽鸼鼎鹑鹍黃龛龁麿鼖龪鹕鰩龁鯧齘鼖龪龀齾鼷鼎麿鼰齝齇齘鹑鹍龁鯧齘鹑鹍鼎麿鼰齝齇齘鸽鸼龁鰊鼳鼄鸽鸼龓鯤鼰齚齘鷴鹕龸鸯鸭龁龦龃鯡龓鷗鹕鹆鹃鸯鸭龁鳿鳼鸽鸼鼷齴齸龢鸞龸鸯鸭龛鯞龦龀齾齶鹜龛鸯鸭鳐鵃鸆鵃龓龁麏麌鼎麿鸆鵃鯝鵪鼖龪黹龸鸯鸭龛鹆鹃鯛鳓齴鹘鯘鯔鸯鸭鯓鯐鰬麣鯍龁鵮鯝鵪鼖龪龛鯊齚齘鹑鹍黹龁龦鱧鼬鯘鯔鸯鸭鯓鯐鱪龛鯮鯫鸊龁龀齾鯉鯆鯄鳔鼎麿鯱鳆龸鸯鸭齴鯂鮾龁鸞鹑鹍鮺麗龛鸽鸼鳪齴齸龢鸞龸鸯鸭龛龁鮺麗鸽鸼黹龀齾鯉鯆鯄鳔鮷鱈鮶鮲鸯鸭鯓鯍龁鮯鮬鳆鹕鮯鮺麗鸽鸼龛鸯鸭鰵鸞鮬鯲鼎鼸鱣黗鼊鮩鮨龁鷹 https://www.drupal.org/node/2443989 鰨龁龦龸鸯鸭鼝龦龀齾龛鯉鯆鯄鳔龸鸯鸭鼎麿鮡鮲龁鰊麱鼎鮡鮲鹕鮞鮺麗鸽鸼龛鸯鸭鯞龦鸞鹑鹍黳鳬齚齘鸽鸼鰕鳪鼎麿鯝鵪鹑鹍龁鯝鵪鹑鹍龛龸鸯鸭鹆鹃鹕鵬齚齘鹑鹍龛龸鸯鸭龁鰊鼳鼎麿鮡鮲龁鮡鮲鮝鮙鮗鮓齴麱鼸鹕鸞鹑鹍鮞鮏鵻龦龛鸽鸼龁龦鸞鹑鹍鰕鵥龸鸯鸭龛鮡鮲麱鮌鮊鵬齚齘鹑鹍龛龸鸯鸭鸆鵃龁龦鼽鸸鰮龓鹣鮈鮇鯛 default_langcode黗鯱鯔鹍鴏鮄鮂龛鸯鸭齴鹘鹕龸鸯鸭龁鹣鮈鮇鯛revision_translation_affected 鯱鯔鯝鵪龛鹑鹍龓鹉齘鸯鸭齴鹘鮞鮏鴑鴏龅鴍鴌鸽鸼龁鹣 content_translation_source 黗鯱鯔鹍鴏鮄鮂鸽鸼龡魾鷼鸯鸭龁齚魻鳪齴鹍鹑鹍龛龸鸯鸭龁鵮龸鸯鸭鮯鮡鮲鹯龁鸞鯛魷鰍麱鵷龁麱鼊魳鰙鮡鮲鯞龦鹉齘鹑鹍鰕魯魬鰯龸鸯鸭龛鸽鸼黹龁鯤魯魬鸞鹑鹍龛鸞鸽鸼龁麿鳁鹑鹍龛鸽鸼麱鹋鮌鮊鯞鯝鵪鹑鹍黹鼝鼰鸽鸼鳪鼊鯝鵪鹑鹍龁龀齾麪鵬齚齘鹑鹍龓鸞鸽鸼龛龀齾黮鯲龁麫麱齴鯝鵪鹑鹍黹鼝龦龛魾齘鸯鸭鹾
鼽鸸鰮鰬node魷鵻鼖龪龛鵮鵬鹑鹍鰵麳齴魪鯝鹑鹍鰨龁鳿龓龛langcode魷鵻鸞鹑鹍龛龸鸯鸭鯞鼎麿麪鼖龪鹑鹍鰬node_revision龓龛langcode黑黐鯧齘鹑鹍龛龸鸯鸭
鼰鳌鷼鲔魧龛鸯鸭麘龵鸀鸣und鸟鰬鯔鴕鯱鳆龁鸣zxx鸟鰬鯔麱魤鹣
龦龃鯡龓龸鸯鸭鰰麱麿鳿鸯鸭麘龵鰬鯔龁麫麿麶鹫Drupal\Core\Language\LanguageInterface::LANGCODE_DEFAULT鰬鯔龁鳿鯛鹕鸣x-default鸟


龀齾齽齼魟魜魘鼽魖鼽鷦魒鸀
$values鸀鸞魖鼽齴齚齘鼽鱟龁魷鵻魑齽齼鹉齘鹑鹍鰵黒鼸齴齚齘鰨龛鹁鸾鼽鸸龁鸴鸳鮯鸽鸼龛鼽鸸龁鸥鶸鹕鶶鷞鶸龁鸊齚魎鸥鶸鹕鸯鸭麘龵龁魳鹯鯛魋鸸鶶鷞龦鷋鷈鰬鹇鱂鹣鰬龓黊魟鼰魉魅鰵鷹龀齾齽齼鰤鵻齐齌鱪鹷鼿鰨
龦鷋鷈鰬龓鰤鵻龛鶶鷞黈鼰齇鯛龁鼝麿黈鼰鯛鸊鵂龁鸯鸭麘龵龛鸊齚魎鸥鶸鹕鷇鷄鶸鸀
$values[$field_name][$langcode][$property_name] =$value;
鲺黉鸞鶶鷞鯤鼰齚齘鷇鷄龁魾鮾鴑齚黠魃魂鷇鷄鶸鸀
$values[$field_name][$langcode] = $value;
龦鱂鹣鰬龓齚魁鹕鸀
$values[$field_name][$langcode][$item][$property_name] = $value;
$item鹕鯛鸊鵂龁鯤鼰齚齘鯛魾鮾鹕0
鲺黉$langcode鹕龸鸯鸭龁魾鮾鸯鸭麘龵鹣LanguageInterface::LANGCODE_DEFAULT鰬鯔龁麫麱鹣龸鸯鸭龛鸯鸭麘龵鰬鯔

$translations鸀鹕齚齘麋魘鼽array_keys鴛鴙龛鸴鬺鸯鸭麘龵龛鼽鱟鰵鲺array_keys($translations[$id])鰨龁鹣麿鯱鯔鸞鹑鹍齽齼鼰鬸鼄鸯鸭鼰鸽鸼龁鳿龓鹆鹃鸯鸭鹣LanguageInterface::LANGCODE_DEFAULT鰬鯔

鷇鷄鱓黶鸀

$values黊魟鸀
$values[$key][$langcode]=$valus;齽齼鯛龁鬵鸯鸭鵻鵹龁龸鸯鸭龛鸯鸭麘龵鹣LanguageInterface::LANGCODE_DEFAULT鰬鯔龁麫麱齴龸鸯鸭龛鸯鸭麘龵龁鷹鰕鹾

$translations黊魟鸀
齴齚齘鼽鱟龁鸥鶸鹕鸯鸭麘龵龁鸥鯛鼎麿齴鼰鬴齘鬳鬰龛鼽鱟龁鲺鸊
$translations[$langcode][鸣status鸟]鰬黶龦鼳鼄鸯鸭麘龵鰕龛鸽鸼鱍鱋鸀鯝鵪麟鵻龦麟鮞鬮魬
$translations[$langcode][鸣entity鸟]齴齚齘麋鹍鵥鵡鸘鸕鸒黗龛鷋鷈齸鹍鷇鷄龛鸽鸼鵥鵡
$translations[$langcode]['status_existed']鮈鮇鯛龁鵮齽齼鵥鵡龓鵻龦龛鸽鸼鮯魯魬黹鹣龢鯱鯔鼽鸸鰮齴鹘黸齑鴑鴏魯魬鬩鷴

$translationInitialize
鰬黶齽齼齴鹘麸龦鬨鴏鸽鸼黔鴈黃龁麳鷬齴鬧麸鸘鸕鸽鸼鵥鵡龁鸆鵃鸞鵷鹫龛鷴鹣齴鬥鬢鸘鸕鸽鸼鵥鵡黹鬨鴏__clone()魘鼽

$langcodeKey
齽齼鵂鬟黃鸥鶸langcode鵥鲪龛鶶鷞鶸龁鳆鳅龦魒鴅龛entity_keys龓龁鳁鳁齴langcode龁鸞鶶鷞龦鼽鸸鰮龓鰤鵻齽齼鵥鲪龛鸯鸭麘龵

$defaultLangcodeKey
齽齼鵂鬟黃鸥鶸default_langcode鵥鲪龛鶶鷞鶸龁鳆鳅龦魒鴅龛entity_keys龓龁鳁鳁齴default_langcode龁龦鼽鸸鰮龓鸞鶶鷞鰤鵻齚齘鮈鮇鯛龁鰬黶齽齼鰤鵻龓鹍鬞鼽鸸鵥鲪龛鸯鸭齴鹘鷴鹕齽齼龸鸯鸭龁龦鸞鸯鸭鸊魯魬齽齼魾鮾鼝鼰鵥鲪龛鸽鸼鳪鼊鮯魯魬鹾

$activeLangcode
鵮鵬齽齼鵥鵡麘鰬龛鸯鸭麘龵龁鲺黉齚齘齽齼齴鼎鸽鸼龛鰵鹵鬛齇齘鸯鸭龛鰨龁魾鮾鵮鵬齽齼鲈麘鰬魑鳿龓齚鷼鸯鸭龁鼳鷬齴鸞鯛鯱鳆龛鸯鸭龁鲺黉鸞鸯鸭齴龸鸯鸭鮙鸞鯛鹣麶鹫LanguageInterface::LANGCODE_DEFAULT鰬鯔龁鸞麶鹫龛鯛鹕鸀'x-default'龁齽齼齽鷎黃鹯鹩麘鰬龸鸯鸭龁鳿鳼鸯鸭齽齼鵥鵡鴃龅黔鴈黃鸽鸼鸘鸕鼆黐鹾

$defaultLangcode
魷鵻鵮鵬齽齼龛龸鸯鸭麘龵龁麳鷬齴 LanguageInterface::LANGCODE_DEFAULT鵥鲪鸯鸭龛麘龵龁龦齽齼鴑鴏鸽鸼鸘鸕黹龁$activeLangcode鮯鸆鵃鹕鸽鸼龛鸯鸭麘龵龁麫$defaultLangcode魷鰍麱鵷龁鼳鱧鼬鬗鬓鹉鸯鸭齴麪鬸齘鸯鸭鸽鸼龅黗龛鹾龦齽鷎黃齽齼黹龸鸯鸭龛鼽鸸齴麿LanguageInterface::LANGCODE_DEFAULT麘鬏鸯鸭麘龵鷴鹕鸥鶸鬋麉龛龁鱊鱈setDefaultLangcode()鹣龢鸆鵃$defaultLangcode龛鯛龁龦魟魜魘鼽鬨鴏鬇鷞鲅鳬鸀
$this->translatableEntityKeys['langcode'][$this->activeLangcode]
龛鯛鷬齴龸鸯鸭麘龵龁鬅鹕鷥黹$this->activeLangcode龛鯛鹕LanguageInterface::LANGCODE_DEFAULT

$entityKeys
魷鵻魒鴅entity_keys鸥龓龛麱鼎鸽鸼龛鷇鷄龁齴齚齘鼽鱟龁鸥鶸鹕齽齼鵂鬟鸥鶸龁鬃龢鹧鹣龁鯛鹕鼽鸸鰮鯛龁

$translatableEntityKeys
魷鵻魒鴅entity_keys鸥龓鼎鸽鸼龛鷇鷄龁鯛鹕齚齘鼽鱟龁鸥鶸鹕齽齼鵂鬟鸥鶸龁鸊魎鸥鶸鹕鸯鸭麘龵龁鯛鹕鸞鸯鸭麘龵鸊鵥鲪龛鯛

$isDefaultRevision
鯱黶鵮鵬齽齼齴鹘齴鹆鹃鹑鹍龁鹆鹃鹑鹍鬀齴魪鯝龛鹑鹍鰵鹑鹍髽髺鱜鷴齴麪齑髽髺黐龛鹑鹍黮鯲鼽鸸髹鹺鯝龛鹑鹍鰨龁鸞鯛鰰麱麿黶鯘鱊鸁魷鵻龦鼽鸸鰮龓龁麫齴麋鰤鵻齐齌鱪髵髴鼆鸒龁鰰龦魖鼽$values龓鸆鵃鰵麋鷥鼎鷹鸞魖鼽鯛鰰鰯鹁鸾黗龡鼽鸸鰮鰨龁魟魜魘鼽鼊鹕鸞鷇鷄髲鯛

鼽鸸鰮鲁鸩鶶鷞鱓黶鸀

revision_translation_affected鼽鸸鰮龓鸞鰩鰤鵻齚齘鮈鮇鯛龁鯱黶鹍鸯鸭龛鸽鸼齴鹘鮞鮏魳魑鯝鵪龛鹑鹍麫鮶鯝龁鯝鵪鹑鹍黹鼝龦龛魾齘鸯鸭鼊鮯鸆鵃鹕鬧龁鹆鹃鯮鯫鸊鯝鵪鹑鹍鹯龁鳿鳼鸯鸭鸽鸼齴黮鯲鵬齚齘鹑鹍鸞鸽鸼龓龛龀齾龁鲺黉黈鼰鮏龅鴍鴌鸽鸼鸞鯛鹕髮龁鬅鹕鯝鵪黌鹑鹍鰊鹍鸽鸼髬黈鼰鮶鯝龁鱓黶鯝鵪鹑鹍龛龀齾魉魅黈鼰齼龐龦鹍鸽鸼龓龁鲺黉鮏龅鸽鸼鮶鯝鸞鯛鹕鬧鹾

鸘鸕齽齼__clone鸀
php鸯鸭龓鸞髪髨鱊鱈龦鸘鸕鹯龛鯝鵥鵡鰕鲗鹣龁鴑鴏髧黮鯲龁鼱鳔龛$this鯱鯝鵥鵡鯞龦龀齾齽齼齸齶龓鸞鱊鱈鼱鳔鼰齝齇齶髤鲺鸊龛麘龵鸀

    $values = $this->values;
    $this->values = &$values;

鼳齴鬅鹕鸽鸼鵥鵡鰕鼳鼄鷇鷄魷鵻龛齴黐龸鸯鸭鵥鵡鰕鸞鷇鷄龛髢鹣龁髟髞齕麌龛鯛麱齴齚齘鵥鵡龁鰊鸘鸕黹髬齴麿髢鹣鬋髛龁高鹣鯛黮鯲髗髴髢鹣黮鯲龁鼳麼齐齌鹯鼸魷髖麱齴髢鹣鬋髛龁鳩鷜鷚麿鸊麘龵鸀

class yunke
{
    public $var = 555;

    public function __clone()
    {
        $var = $this->var;
        $this->var =& $var; //该处是否加“&”结果不一样,加了为555,不加为666
    }

    public function getme()
    {
        $copy = clone $this;
        $copy->var =& $this->var;
        return $copy;
    }
}

$a = new yunke();
$b = $a->getme();
$c = clone $b;
$a->var = 666;
print_r($c);

龦鵥鵡鸘鸕龓鬨鴏髎髌龛髧黮鯲龁髢鹣鱣髋鹌黮鯲鹕髢鹣龁鹕黌鱓黶鼳龪鳩鳚黑麿鸊麘龵鸀

class yunke{
    public  $var=7;
}
$a=new yunke();
$b=new yunke();
$c=new yunke();

$b->var=&$a->var;
$c->var=$b->var; //后者虽是一个引用,但执行值复制
$d=clone $b; //后者中的var属性执行引用复制,
$a->var=8;
echo $c->var; //输出7
echo $d->var; //输出8

鱙鱗鱓黶鸀
1麟 鱯鱫麜麘鱪鹌鲧龁鷹php髆髃鴅骿鸀
http://php.net/manual/zh/class.iteratoraggregate.php


鹍鼖鷬黐鼳鼱龁鰊龀齾齽齼齸齶骻鴕鰴鹼龁麋龢鳼鼴龓黌骹齇鼹鼸龁鹯骶鳈鰩鰴骳黠鰴鷦龁骱鱣鼊麞黮骮黑鸞齸齶龛齽龐龁鴃龅鹍鼖龛麁麀骫龦齌鷦黹鲪鸞麱齴黽黤黌

鷴龍鸯鸀

鵮齚齘鴍骪龦骧骣龛骟骜骙骕骓骑黹龁鸊鳔骪魑齚齘鸛麼骏骍魂鷥骓骑龛鴍龁骧骣齝骋龁鳼骏齑骉骈鰕鳖龁鼎齴骧骣鰕黈鼰骅龁鷁骄骃龛骁鱊麳黈鼰龁鼳齘黹骀鸊鳔龛鴍鼊齝驽驹龁驶驲驰马龁鼳黹骀鳼鸞驫鮾驩驨驦齝齇鴍鱓drupal黽鼕龁鼳齴鬅鹕龦鼕鼒龅龃龓鷬鼊黓黐鼳鷼鯮鯫龁鷤鷢鱣鳿鷗鹕drupal龛鼕鼒骧骣龁龦鼕鼒黐龀齾齽齼黹鱣驣鹕鲺鷥龁鼳齘黹骀鳩麱齑驡驟龡龝龁驞鮓鼰鴍骈鰕鳖黌鷬齚鳆齴鼰骅龛龁鴍驛鴍鰙驙龛魉驘齴鼰鮬龛龁黒齑齇驗黹驙鷬鼸黶黴龁鸒龐骧骣鸊龛魾鷼驰马齴鬅鹕黒黑黐黌黊黉龁黈鼰黑黐龅龃龁鼎鼸龦骧骣龛驔鳔鼰齚鬞驑驐龛骅龁鰕鳔龛鴍魋鹍麱齴麪骧骣驎鰕鳖龛鹾龀齾齽齼鷬齴鼳麼龁drupal龎黜驲驌骱黒鼊黑黐齚齘黧龚黮黫龛鳈鳇龁齽齼魪黔黒齴齚齘齝麦麣龛鳈鳇鰵鷹鹍鳈鰩龛齽齼麁麀鰨龁魳鹯骳黠驊驉黙黗龁黸齑骱驆驆鮨黃龁齌鷦鴃鲮骧骣骟骜龛驂骅龁麱齑鮯鼕鼒骧骣驀黐鹾鼳鼱龱鷈齘騽黤龁龦鼽鼕騼鼰齘龚鶸騸騸龛黽鼿鷓鷐鸣騴騱龚鳆齌 鸟龁鼬齇鴍騭騪龦麸鳔骧骣龛骉驎鰕龁髋黐鬴騨齇騤鹯鼰齘鷓驡鮇騡龛鴍龦鷜鷚騟騛騙騕黹鳬鲛髖黶黌鲽龁鲺鷥騔齌鹺騑龁龚騎鼎麿騌騈鸊鼳齘騽黤龁骅麱齴黈鼰龁黒齴黸齑騅騃鳓駿龱龛駽鰍鹾

本书共78小节:

评论 (写第一个评论)