PHP5 'klon' nasıl çalışır?

2 Cevap php

Düzenleme: Bu davranış query globals üzerine ile tekrarlanabilir.

Ben şu var:

  $_SESSION['query_key'] = $_GET['query_key'];
  print($query_key);

Vs.

  $_SESSION['query_key'] = clone $_GET['query_key'];
  print($query_key);

The former prints out the value of $query_key, while the latter prints nothing. What sort of weird side effect is this of clone?

2 Cevap

You must be doing something very weird with your code. clone is for use on objects. Unless you're stuffing objects into $_GET then that code will result in a fatal error (or a warning in older PHP versions).

@ Michael Haren - klon aslında bir nesnenin basit bir kopyasını, tüm özellikleri yani, kopya yok, ama bir özellik başka bir nesneye bir başvuru olup olmadığını, diğer nesne klonlama, referans değil kopyalar.

Sen - ben bu sizin diğer soru (here) içinde başvurmak sorun için iyi bir çözüm olduğunu sanmıyorum bu gerçekten özellikle soru cevap vermez biliyorum, ama Roborg için Yorumlarınız dayalı devre dışı bırakılması daha iyi register_globals'ı olurdu

en kısa sürede yapmak gibi

$_SESSION['query_key'] = 'anything'

$ Query_key $_SESSION['query_key'] için bir referans olacak, bu yüzden içine koyarak ne klonlama hiç fark yaratacak

Edit

Klonlama sadece nesnelerle çalışır, bu yüzden bir dize klon olamaz. Bu ölümcül bir hata neden olur. Ben size 'On' için günlükleri veya set display_errors bakarsanız yerine boş bir sayfa daha bir hata alırsınız düşünüyorum