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龔黠骒驧髏默鼐黕黓齠齟黯龝黳黲龞鳥鳢龇齾齽鮋黝默齵齠齟齤麨麧龞鳥鳢鱓鸅鹛鳥鱄龞齾齽麆麅鱂龇鮕鹲髒黨驥驢黟點龇鼁齘髏驟驟鯈黄龇齓鷴鴔鳉髉髅髁骽龞驜骥龇麴齘鯒鼗鼓髉髅驛黓麁鼸鼴龲鷕齟驙黮龇龪齄鼗驖鼰齟龝鷇驓驓龞鼆齈鷟鷜鸮驏驋龝鳡齓 鸪龇鼭齍鴡驇驆龪麻鳯髉髅龞骨驩鰴龇髬黓魕驅齍驃鹲鼰齟鷟驽鮨驂龞鴡龪鷧鷣騾騻騺騸鼂鴃鲸髴鼀黏鳔龇鳐鷰騴齓鹼騱龇龝騰鼑黀騬騩鸚鼸齟驙黮龇骥麴齵黉鼰龇默齵鼁齘騨騤鳭騢龲龞騞鰨麁

本书共88小节:

评论 (写第一个评论)