Değişkenleri bağlamak için bir yolu var mı?

4 Cevap

Using PHP 5 I would like to know if it is possible for a variable to dynamically reference the value of multiple variables?

Örneğin

    <?php
    $var = "hello";
    $var2 = " earth";
    $var3 = $var.$var2 ;
    echo $var3; // hello earth

Ben de değiştirmek $var veya $var2 Ben istiyorum şimdi $var3 çok güncelleştirilecek.

    $var2 =" world";  
    echo $var3;

Bu hala merhaba toprak basar, ama ben "merhaba dünya" şimdi yazdırmak istiyorum: (

Bunu başarmak için herhangi bir yolu var mı?

4 Cevap

Hayır, basit değişkenler PHP ile bunu yapmak için hiçbir yolu yoktur. Eğer muhtemelen ne yapardın, PHP böyle bir şey yapmak istedim eğer var1 ve değişk2 için üye değişkenleri ile, bir sınıf oluşturmak ve daha sonra size değişk3 için hesaplanan bir değer verecek bir yöntem var olacaktır.

Bu hile yapmak gerekir. PHP 5.3 üzerinde test edilmiş ve işe yaradı. Ayrıca herhangi 5.2.x sürümü üzerinde çalışması gerekir.

Kolayca dizeleri bir rasgele sayı nesnesine yerleştirilen izin vermek için bir "add"-Yöntemi ile bu uzanabilir.

<?php
class MagicString {
    private $references = array();
    public function __construct(&$var1, &$var2)
    {
        $this->references[] = &$var1;
        $this->references[] = &$var2;
    }

    public function __toString()
    {
        $str = '';
        foreach ($this->references as $ref) {
            $str .= $ref;
        }
        return $str;
    }
}
$var1 = 'Hello ';
$var2 = 'Earth';

$magic = new MagicString($var1, $var2);
echo "$magic\n"; //puts out 'Hello Earth'
$var2 = 'World';
echo "$magic\n"; //puts out 'Hello World'

Benim bakış itibaren aşağıdaki kod gerekli biraz daha yakın:

$a = 'a';
$b = 'b';
$c = function() use (&$a, &$b) { return $a.$b; };
echo $c(); // ab
$b = 'c';
echo $c(); // ac

Bir işlev oluşturun.

function foobar($1, $2){
$3 = "$1 $2";
return $3;
}

echo foobar("hello", "earth");
echo foobar("goodbye", "jupiter");