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龋黫驼驒骿點鼐黛黚齝齜黷龗黺黸龛鳝鳜齾齶齵鮗黣點齮齝齜齡麧麥龛鳝鳜鱒鷿鹚鳝鰽龛齶齵麇麅鰻齾鮠鹳髃黳驎驌黩黧齾鼄齙骿驈驈鯖黋齾齒鷫鴎鳀骷骴骱骯龛驆骒齾麳齙鯛鼜鼘骷骴驂黚麄鼸鼵龲鷒齜驁黵齾龥齅鼜騿鼲齜龗鶿騽騽龛鼈齈鷘鷗鸩騼騺龗鳘齒 鸥齾鼮齍鴙騸騶龥麻鳧骷骴龛骗驕鰰齾髝黚魝騳齍騲鹳鼲齜鷘驫鮯騯龛鴙龥鷠鷝騬騫騨騥鼆鳻鲮髭鼂黖鳏齾鳍鷩騤齒鹾騠齾龗騞鼔黅騜騙鸑鼸齜驁黵齾骒麳齮黐鼲齾點齮鼄齙騖騕鳤騔龲龛験鰩麄

本书共63小节:

评论 (写第一个评论)