Ben bunu yapmak istiyorum:
class MyClass {
var $array1 = array(3,4);
var $array2 = self::$array1;
}
ve $ dizi2 çalışmıyor.
Başka bir sınıf özelliği eşit bir sınıf özelliği yapmak için bir çözüm / hile var mı?
Teşekkürler.
Göre PHP Manual
a>:
Varsayılan değer (örneğin) bir sabit ifadesi değil, bir variable, bir sınıf üyesi ya da bir işlev çağrısı olmalıdır.
Ne yapabilirdi:
class MyClass {
var $array1 = array(3,4);
var $array2 = array();
function MyClass() {
$this->array2 = $this->array1;
}
}
Fonksiyonu MyClass
(veya __construct
Eğer PHP5 ise) yeni bir nesne oluşturulduğunda, her adı verilecek, bu nedenle herhangi bir örneği MyClass
{bir olurdu Onun array1
özelliği olarak aynı değere sahiptir [(3)]} özellik.
$myclass = new MyClass();
print_r($myclass->array1); // outputs Array ( [0] => 3 [1] => 4 )
print_r($myclass->array2); // outputs Array ( [0] => 3 [1] => 4 )
Ben PHP için yeni değilim, ama Paolo cevap values yapıcısındaki aynı olması için sadece başlatılıyor gibi görünüyor, ama aslında her iki değişken aynı içeriği başvuru yapmaz. Buna ne dersiniz:
class MyClass {
var $array1 = array(3,4);
var $array2 = array();
function MyClass() {
$this->array2 = &$this->array1;
}
}
$myclass = new MyClass();
print_r($myclass->array1); // outputs Array ( [0] => 3 [1] => 4 )
print_r($myclass->array2); // outputs Array ( [0] => 3 [1] => 4 )
echo "<br />";
$myclass->array1[0] = 1;
$myclass->array2[1] = 2;
print_r($myclass->array1); // outputs Array ( [0] => 1 [1] => 2 )
print_r($myclass->array2); // outputs Array ( [0] => 1 [1] => 2 )
Referans eklenmesi ile, both class emlak değerleri değişti ya zaman değiştirebilirsiniz. Ben bir şey eksik?
Hem cevaplar, Paolo ve notruthless, mükemmel, çok teşekkür ederim!
Ben iki özellik senkronize tutmak istiyorsanız:
function MyClass() {
$this->array2 = &$this->array1;
}
Ben iki dizileri başlangıçta aynı değerlere sahip olmak istiyorum ama sonra bunları tek tek değiştirmek istiyorsanız, ben 've' kaldırın:
function MyClass() {
$this->array2 = $this->array1;
}