ホームページ  >  記事  >  バックエンド開発  >  phpのオブジェクトと参照

phpのオブジェクトと参照

伊谢尔伦
伊谢尔伦オリジナル
2016-11-23 13:49:15911ブラウズ

php5のオブジェクトプログラミングでよく言われる重要な点は、「デフォルトではオブジェクトが参照渡しされる」ということです。しかし実際には、これは完全に正しいわけではありません。以下にいくつかの例を示します。

PHP 参照はエイリアスです。つまり、2 つの異なる変数名が同じコンテンツを指します。 PHP5 では、オブジェクト変数はオブジェクト全体の値を保持しなくなりました。実際のオブジェクトのコンテンツにアクセスするには、識別子を保存するだけです。 オブジェクトがパラメータとして渡されるか、結果として返されるか、または別の変数に割り当てられる場合、他の変数には元の変数との参照関係はありませんが、どちらも同じ識別子のコピーを格納し、オブジェクトの実際の内容を指します。同じオブジェクトです。

例 #1 参照とオブジェクト

<?php
    class A {
        public $foo = 1;
    }
    $a = new A;
    $b = $a; // $a ,$b都是同一个标识符的拷贝
    // ($a) = ($b) = <id>
    $b->foo = 2;
    echo $a->foo."\n";
    $c = new A;
    $d = &$c; // $c ,$d是引用
    // ($c,$d) = <id>
    $d->foo = 2;
    echo $c->foo."\n";
    $e = new A;
    function foo($obj) {
        // ($obj) = ($e) = <id>
        $obj->foo = 2;
    }
    foo($e);
    echo $e->foo."\n";
?>

上記のルーチンは出力します:

2
2
2


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。