php başvurular hakkında sorular

1 Cevap php

when I was looking for some MVC framework, I got the website: http://www.phppatterns.com/docs/design/archive/model_view_controller_pattern

however, like the code listed there makes me confused about references. For example:

  $dao=& new DataAccess ('localhost','user','pass','dbname');
  $productModel=& new ProductModel($dao);

yapar her örnek, bu '&' ekler new operatörü önce, tam olarak ne anlama geliyor? örneğine referans? Aslında tüm '&' kaldırıldı örneklerini ve tüm kodu bu tür hala mükemmel çalışıyor önce.

Başka, kodlar gibi:

 function ProductView (&$model) {
    $this->model=& $model;
 }

Ben gerçekten böyle revize edilebileceği düşünüyorum:

function ProductView (&$model) {
    $this->model=$model;
}

Haklı mıyım? Bu ikisi arasındaki fark nedir? Aslında MVC kod örneği yukarıda listelenen gibi? Ben yaptığım gibi kod gözden eğer, kod hala çalışıyor.

Then, I got this post somewhere else: http://schlueters.de/blog/archives/125-Do-not-use-PHP-references.html

mantıklı mı? Bu konuda herhangi bir öneriniz yararlı olacaktır.

1 Cevap

Önce PHP sürümü 5 nesneler, değere göre iletilmiş ve açıkça referans nesne almak için işareti belirtmek zorunda kaldı. *

PHP 5 +, tüm nesneler başvuruya göre iletilir ve böylece işareti kullanarak gereksiz olduğunu vardır.

Ayrıca, PHP 5.3.0 'da, yukarıdaki gibi bir kod "referans olarak yeni dönüş değeri atama önerilmiyor" bir TAM hata üretecektir.

Eğer "$o =& new Object() " code see php-by-reference (özellikle, kabul cevabı iyi bir açıklaması var sağlayan) tarihsel kullanımı (PHP 4 veya daha önce) merak ediyorsanız.

Özetlemek gerekirse:

  • Yukarıdaki PHP 5 veya, hiç fark etmez. no bellek veya diğer farklılıklar ile beklendiği gibi kod çalışacaktır.

  • PHP 5.3 'te (sen KESİN bildirimler açık varsayarak) bu kullanımı hakkında şikayet bazı KESİN bildirimler alabilirsiniz.

  • PHP 4.x (veya daha önce) bu yöntem nesnelerin gereksiz yere tekrarını önlemek için kullanılmıştır.

(*) Passing referanslar etrafında iyi bir şey - sadece bir örneğini gerektiğinde nesnelerin kopyalarını oluşturmak gerek.